阿罗哈!我对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。该情节属于文件列表中的最后一个数据集。我做错了什么?
发布于 2014-10-06 23:13:21
只需将设备打开(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()https://stackoverflow.com/questions/26225949
复制相似问题