1

经过大量编辑和一些有用的评论......

我想遍历四个文件,并在同一页面上的四个不同图中绘制每个文件中的数据。我需要对 的每个值执行此操作laneCombination,它们是列号。使用下面的代码(错误的最小示例),我得到了想要的结果,除了这些图包含相同的数据

library(ggplot2)
library(grid)
library(gridExtra)

plots <- list()

for (laneCombination in 3:3) {
  for (depVar in 1:4) {
    simdata <- data.frame(cond = rep(c("A", "B"), each=10),
                                    xvar = 1:20,
                                    yvar = 1:20 + rnorm(20,sd=3))
    plots[[depVar]] <- ggplot(simdata, aes(xvar, simdata[,laneCombination]), environment = environment()) +
    geom_point() + geom_line() + labs(x="Duration", y=depVar) + theme(legend.position="none")
  }
  grid.arrange(plots[[1]], plots[[2]], plots[[3]], plots[[4]], ncol = 1, main = colnames(simdata[laneCombination]))
}

前三个图被最后一个覆盖: 结果

@eipi10 已在评论中正确识别出问题:simdata[,laneCombination]导致范围问题。但是,他/她的评论中引用的 SO 问题中的解决方案(通过变量编号在 aes 中寻址 x 和 y)似乎无法解决问题。我需要遍历我的任务的列

4

0 回答 0