在应用循环中为多个数据集创建多平面图
问题描述:
Aloha!我是R新手,目前正在经历一个陡峭的学习曲线。如果我弄错了所有R语言,我很抱歉。在应用循环中为多个数据集创建多平面图
我有许多数据集,每一个数字数据的6列。所以:
- DF1:列1通6
- DF2:列1通6
- DF3:列1通6 ...等等
我能创造一个在一个PDF使用下面的代码的lapply()
循环之外多面板情节:
pdf(file="plot1.pdf, width=8.5, height=11)
par(mfrow=c(3,3), oma=c(1,1,8,1))
plot(a ~ b, df1)
plot(a ~ b, df2)
plot(a ~ b, df3)
...
dev.off()
既然我有这么多的数据集,我想要绘制并显示在同一PDF中,我尝试使用lapply()
循环,以便循环访问数据集。在下面的例子中,假设我有9个数据集,所以我可以创建3行3列的单页多图。
Test <- lapply(1:length(files), function(x) { # files = list of 9 file names
a <- as.data.table(read.csv(files[x], header = TRUE))
pdf(file="plot1.pdf, width=8.5, height=11)
par(mfrow=c(3,3), oma=c(1,1,8,1))
plot(col 1 ~ col 2, a)
dev.off()
})
当我运行这段代码时,我得到一个只有一个plot的PDF。该图属于文件列表中的最后一个数据集。我究竟做错了什么?
答
您只需将设备打开(pdf()
),配置(par()
)和关闭(dev.off()
)移到循环外部。另外,您可以直接遍历文件,并且不需要创建data.table。还修复了你的公式语法。
pdf(file="plot1.pdf", width=8.5, height=11)
par(mfrow=c(3,3), oma=c(1,1,8,1))
Test <- lapply(files, function(x) {
a <- read.csv(x, header = TRUE)
plot(col1 ~ col2, a)
})
dev.off()
太谢谢你了!它现在有效! – ccheng 2014-10-07 00:48:50