阿罗哈!我是R的新手,目前经历了陡峭的学习曲线。如果我把所有的R语言弄错了,我道歉。
我有很多数据集,每个数据集都有6列数字数据。所以:
我可以使用以下代码在lapply()
循环之外的一个PDF中创建多面板图:
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()
})
当我运行此代码时,我得到一个只有一个图的PDF。该图表属于文件列表中的最后一个数据集。我做错了什么?
答案 0 :(得分:2)
您只需要在循环外移动设备开放(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()