【发布时间】:2013-12-28 08:06:48
【问题描述】:
我的 ls 上有几个 ggplots 作为对象。我想将它们保存为单独的文件(尽管我也想知道如何将它们全部保存在 1 个大文件中)。我读过这个:question 和question,但我似乎无法调整代码。我还尝试按照here 的建议将它们全部绘制在一个大文件中,但确实会出现此错误:Error in do.call("grid.arrange", plots2[[i]]) : second argument must be a list。在将所有 ggplots 放在一个列表中时,我缺少一些东西。
这是我迄今为止尝试过的:
> ls() #List of objects on my ls. All the p* are my ggplots that I want to save.
[1] "all" "dat" "dat2" "dat3" "data" "dlook" "dlook2" "dlook3" "i" "look2" "mdfx"
[12] "objects" "order" "p" "p1" "p10" "p11" "p12" "p13" "p14" "p15" "p16"
[23] "p17" "p18" "p19" "p2" "p3" "p4" "p5" "p6" "p7" "p8" "p9"
> objects<-ls()
> plot<-objects[14:30]
> plots
[1] "p1" "p10" "p11" "p12" "p13" "p14" "p15" "p16" "p17" "p18" "p19" "p2" "p3" "p4" "p5" "p6" "p7" "p8" "p9"
> class(plots)
[1] "character"
plots2<-as.list(plots)#Transform into a list.
library(gridExtra) #Code suggested to create one pdf file.
pdf("test.pdf", onefile = TRUE)
for (i in seq(length(plots2))) {
do.call("grid.arrange", plots2[[i]])
}
dev.off()
【问题讨论】:
-
您指向第二个问题的链接与第一个问题相同。另外,您是要在 pdf 的每页上打印一个图,还是将它们一起排列在一页上?
-
抱歉,这将解决此问题。我想知道如何做这两个选项 1)单独的 pdf 和 2)都在一个大 pdf 中,每页一个情节。
-
此时,您可能需要
mget(另请注意ls将允许您使用正则表达式查找项目)。但首先将所有地块放在一个预先分配的列表中可能会更简单(也更干净)。 -
@joran 你能告诉我如何制作清单和分配我的地块吗?或者推荐任何链接/阅读资料?
-
@GodinA 一旦你阅读了
mget并尝试过,你需要完全放弃 for 循环。do.call的重点是你把函数grid.arrange和整个 ggplot 对象列表交给它,剩下的事情就交给它了。