如何遍历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

如何通过循环调用每一列?

谢谢

weashing 回答:如何遍历R中的每个列标题并将其应用于创建图

使用tidyverse函数pivot_longer(),您可能会发现for循环的替代方法更简单:

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的信息:How to plot all the columns of a data frame in R

本文链接:https://www.f2er.com/3077760.html

大家都在问