将 ggplot 分配给 for 循环中的变量

vir*_*ius 5 r ggplot2

我正在使用它在 for 循环中将绘图打印到 PDF,它工作正常:

print(ggplot(subdata3, aes(x = Year, y = value, colour = Stat)) 
+ geom_line() + expand_limits(y=c(0,100)) 
+ ggtitle(paste0(as.character(ScenName),":\n", as.character(k))) 
+ ylab(paste0(j, " (", units, ")")))
Run Code Online (Sandbox Code Playgroud)

现在,我需要将每个ggplot变量分配给一个变量“p”,然后将其存储在一个列表中,并用于multiplot在页面上排列多个图。

这是我将绘图分配给变量的尝试:

p <- ggplot(subdata3, aes(x = Year, y = value, colour = Stat)) 
+ geom_line() + expand_limits(y=c(0,100)) 
+ ggtitle(paste0(as.character(ScenName),":\n", as.character(k))) 
+ ylab(paste0(j, " (", units, ")"))
Run Code Online (Sandbox Code Playgroud)

我所做的唯一更改是删除print()并进行变量分配。之后,我收到此错误:

Error in +ggtitle(paste0(as.character(ScenName), ":\n", as.character(k))) : 
  invalid argument to unary operator
Run Code Online (Sandbox Code Playgroud)

我已经尝试了对各种设置的许多调整(),试图找到解决方案,但是,似乎没有任何效果。

有什么想法吗?

Edw*_*rek 3

你把你的+s 放错地方了。尝试这个:

p <- ggplot(subdata3, aes(x = Year, y = value, colour = Stat)) +
  geom_line() + expand_limits(y=c(0,100)) +
  ggtitle(paste0(as.character(ScenName),":\n", as.character(k))) +
  ylab(paste0(j, " (", units, ")"))
Run Code Online (Sandbox Code Playgroud)