2

如何使用 R 继续将数字保存到 pdf 中。考虑以下示例:

require(ggplot2)
require(gridExtra)
TopFolder <- "...directory on my drive"
setwd(TopFolder)


pdf(file = paste(TopFolder,"figures","example.pdf",sep = "\\"))

g <- list()
for(i in 1:4){
  dat <- data.frame(d1 = c(1:10),
                    d2 = runif(10))
  g[[i]] <- qplot(x = d1, y = d2,
        data = dat)
}
grid.arrange(g[[1]],g[[2]],g[[3]],g[[4]])  

for(i in 1:6){
  dat <- data.frame(d1 = c(1:20),
                    d2 = runif(20))
  qplot(x = d1, y = d2,
                  data = dat)
} 

dev.off()

我的问题是:为什么不显示在 pdf 文件中的第二组图,即第二个 for 循环生成的 6?我能发现的唯一明显区别是我将图存储在第一个循环中,而不是在第二个循环中。为什么R不在第二个循环中生成这些图并在完成后将它们保存在pdf中?

我希望从这个例子中得到的结果是 pdf 的第一页有四个子图,然后有 6 页,每页有一个图形。为什么不生成这个?我会认为 R 会一直在文件中生成数字,直到调用 dev.off() ?

4

1 回答 1

4

...以及所有将上面的所有命令放在一起

require(ggplot2)
require(gridExtra)
TopFolder <-"...directory on my drive"
setwd(TopFolder)


pdf(file = file.path(TopFolder,"figures","example.pdf"), onefile=TRUE)
g <- list()
for(i in 1:4){
dat <- data.frame(d1 = c(1:10),
                  d2 = runif(10))
g[[i]] <- qplot(x = d1, y = d2,
                  data = dat)
}
grid.arrange(g[[1]],g[[2]],g[[3]],g[[4]])  

gg <- list()

# each of this plots will be on a separate page
for(i in 1:6){
  dat <- data.frame(d1 = c(1:20),
                    d2 = runif(20))

  # here a print is necessary
  print(qplot(x = d1, y = d2,
        data = dat))
} 
dev.off()
于 2013-08-12T11:10:44.547 回答