我生成了一堆图表并将它们写入列表变量,如下所示。
filename <- paste some elements together to create a unique name
graphsListHolder[[filename]] <- p # p is the name of the ggplot plot
循环使用以下代码,以获得与我一样多的绘图
.rds
我将graphsListHolder保存为grid.arrange
文件。
稍后我想读取res文件,从graphsListHolder文件中选择图并显示grid.arrange(
graphsListHolder[[3]], graphsListHolder[[5]]
)
。我可以硬编码绘图编号,以下示例在运行时工作正常,绘制两个图形,一个在另一个上面。
temp
但是,如果我构造一个像这样的字符变量temp <- "graphsListHolder[[3]], graphsListHolder[[5]]"
(或其变体)
grid.arrange(
temp
)
并将grid.arrange代码更改为
Error in gList(list("graphsListHolder[[3]], graphsListHolder[[5]]", wrapvp = list( :
only 'grobs' allowed in "gList"
In addition: Warning message:
In grob$wrapvp <- vp : Coercing LHS to a list
我得到了
eval(parse(text = temp)
我也试过{{1}}但没有成功。
答案 0 :(得分:1)
我不确定你想如何选择它们,但是说你有一个你想要的元素的载体
x <- c(3,5)
然后你可以做
grid.arrange(grobs=graphsListHolder[x])
尝试将任意字符串转换为可执行代码通常不是一个好主意。通常会有更多的传统&#34; R的替代品。
例如
graphsListHolder<-Map(function(x) {
ggplot(data.frame(x=1:10, y=x*1:10)) + geom_point(aes(x,y)) + ggtitle(x)}, 1:5)
x <- c(3,5)
grid.arrange(grobs=graphsListHolder[x])