我想在for循环中使用ggplot2进行多个绘图,但无法识别aes中的Y变量

问题描述

我有一个称为TumorData的数据框,其中的列是不同基因的基因表达数据,行是不同的患者。 我想要一个列(名称为TP53)对第3至12列中每个基因的散点图。 我做了以下

for(i in 3:12) {
  GeneName <- colnames(TumorData[,i])
  FileName <- paste0(GeneName,".png")
  ggplot(TumorData,aes(x = TP53,y = GeneName)) +
    geom_point()
  ggsave(FileName)
}

但是当我转到保存的文件时,就好像它是一维图:仅相应绘制了第一个参数(TP53)。一切都在同一水平线上,Y轴甚至没有数字刻度。循环确实读取了“ GeneName”,因为实际的基因名称出现在每个图形的Y轴中,但是就像它并不能“理解”它是数据框中的列名称,并且应该检索数字值从那里。 我附加了一张图表的外观图像,因为我不确定自己的解释是否足够清楚。 This is how the graph looks

很抱歉,如果这太笨了,我是R的新手,对循环没有太多的经验,更不用说循环和图了。关于如何解决这个问题的任何想法?

编辑:我按照Stefan所说的那样使用了 .data

    for(i in 3:12) {
  GeneName <- colnames(AllPatients[,".png")
  ggplot(AllPatients,y = .data[[GeneName]])) + 
    geom_point()
  ggsave(FileName)
}

成功了,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)