R递归地过滤带有列表列表的数据帧

时间:2018-03-28 16:44:12

标签: r list dataframe ggplot2 dplyr

我有多个列表,我想用它来过滤数据框并使用ggplot进行绘图 列表包含列中的数据 - df $ old
我想递归地从列表中获取一个项目并使用相应的列表过滤数据,并使用带有与列表名称对应的标题的过滤列表绘制一个条形图 过滤步骤不起作用。我尝试了一堆没有运气的方法,我找不到这个问题 我觉得我想使用rlist,但也无法让它工作 使用的包 - dplyr,reshape2,ggplot2
在rnotebook工作

Row.names t1  t2  t3  t4  t5  old new
to_delete 10  -2  -8  12  10  g1  gr1
to_delete -5  18  11  -6  10  g2  gr2
.
.
.

lists <- c(a, b, c)
a <- c("g1", "g5", "g8")
b <- c("g2", "g3", "g9")
c <- c("g4", "g6", "g7")

for(i in lists){
  print(i)
  df_sub <- filter(df, grepl(paste(i, collapse="|"), old))
  df_sub$Row.names <- NULL
  df_sub <- melt(df_sub, id.vars=c("old", "new"))
  p <- ggplot(data=df_sub, aes(x= old, y=value, fill = variable)) +
    geom_bar(stat="identity", position = "dodge", width = 0.5) +
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
    labs(title = paste(i," genes"), x = NULL, y = expression("log"["2"]*" fold change"), fill = "time vs shaking") +
    theme(axis.text.x = element_text(size  = 8, angle = 45, hjust = 1, vjust = 1)) +
    theme(plot.title = element_text(hjust = 0.5)) +
    scale_fill_manual(values=c("999999", "E69F00", "56B4E9", "red", "black"))
  print(p)
}

0 个答案:

没有答案