r将字符串解释为列表元素

时间:2017-04-15 20:03:18

标签: r ggplot2

我生成了一堆图表并将它们写入列表变量,如下所示。

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}}但没有成功。

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])