阿罗哈!我是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。该图属于文件列表中的最后一个数据集。我究竟做错了什么?
您只需要将设备的打开(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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句