首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在apply循环中为多个数据集创建多平面图

在apply循环中为多个数据集创建多平面图
EN

Stack Overflow用户
提问于 2014-10-06 22:37:32
回答 1查看 1.1K关注 0票数 0

阿罗哈!我对R不熟悉,目前正在经历一段陡峭的学习曲线。如果我把R语言搞错了,我很抱歉。

我有许多数据集,每个数据集都有6列数值数据。所以:

  • df1:列1至6
  • df2:列1至6
  • df3:列1到6,...and等等

我能够使用以下代码在lapply()循环之外的一个PDF中创建多个面板图:

代码语言:javascript
复制
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列组成的一页多图。

代码语言:javascript
复制
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。该情节属于文件列表中的最后一个数据集。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 23:13:21

只需将设备打开(pdf())、配置(par())和关闭(dev.off())移出循环。此外,您可以直接遍历文件,并且不需要创建data.table。也修正了你的公式语法。

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26225949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档