r - 如何遍历 R 中的每个列标题并将它们应用于创建图形
问题描述
我的桌子是这样的
family_group
col1 col2 col3
1 1 1
1 2 NA
2 3 NA
我正在尝试遍历每个列标题并在函数中调用它,这样我就可以为每个标题创建一个图表
我试过这个:
for (val in colnames(family_group))
{
print(val)
intermediate_tables <- count(na.omit(family_group$val))
intermediate_frequency <-count(intermediate_tables$freq)
plot <- ggplot(data =intermediate_frequency, aes(x=intermediate_frequency$x, width = 0.5)) +geom_bar(aes(y=intermediate_frequency$freq), stat="identity", fill='lightgreen', color = 'green') +
geom_smooth(aes(y=intermediate_frequency$freq), method = 'loess') +
labs(x = "# of Samples in family", y = "# of families")
plot
}
打印 val 时,它确实显示“col1”、“col2”和“col3”
但是当我试图打电话给family_group $ val时,它给出了None
如何通过循环调用每一列?
谢谢
解决方案
使用以下tidyverse
函数可以替代 for 循环,您可能会发现它更简单pivot_longer()
:
library(tidyverse)
family_group %>%
pivot_longer(c(col1, col2, col3),
names_to = "column_name",
values_to = "value") %>%
ggplot(aes(value)) +
geom_bar() +
facet_wrap(~ column_name)
这个想法不是拥有多列,而是将所有数据重新塑造成一个很长但很窄的数据框。在此处查看有关 SO 的更多信息:如何在 R 中绘制数据框的所有列。
推荐阅读
- angularjs - AngularJS 在新请求上中止先前的请求
- javascript - 检查django中的选项选择是否为空
- sql - 编写一个 SELECT 语句,从 db1.MyGuitarShop.Products 表中返回这些列:
- flutter - 向上滚动时隐藏底部导航栏
- r - 为新创建的因子组创建一个新列分组数字 (num)
- winforms - 如果主窗体或它所在的任何用户控件被移动或调整大小,则更改窗体位置
- angular - 在父视图中渲染 elementReference
- spring-boot - 使用 HttpURLConnection 使用 Mockito 进行单元测试
- c++ - 查询c++中函数的默认返回类型
- c - 可以打开读取传感器数据