【发布时间】:2017-05-15 22:18:13
【问题描述】:
过去几天我一直被这个问题困扰。
for(i in 1:10){
nam <- paste("A", i, sep = "")
p <- ggplot(data=PCdf8, aes(x = 1:nrow(PCdf8), y = PCdf8[,i])) +
geom_line(colour = "#0072B2", size = 0.5)
assign(nam, p)
}
grid.arrange(A1, A2, A3, A4, A5, A6, A7, A9, A10)
我的代码吐出 10 次相同图的网格(顺便说一句,#10),而不是 10 次不同的图。
我尝试将它们写入一个空列表,但非 grobs 与 grid.arrange() 不兼容。我也尝试过删除非格罗布。我求助于将每个情节写入对象 A1 到 A10。我还尝试在每个循环结束时删除“nam”......不过,似乎这个循环产生了 10 个对象,A1 到 A10,具有相同的情节,这意味着循环中的最后一个情节被令人恼火地写入所有对象。
我想将其扩展到大约 100 个地块。所以,我想做这样的事情:
grid.arrange(A1:A100)
我尝试使用 seq() 和 paste() 的不同组合,但无济于事。
我在这里和网上看到过类似的问题,但找不到可行的解决方案。
谢谢。
【问题讨论】:
-
在使用 for 循环时,您需要注意左侧有索引。否则,您会在每次传递期间覆盖这些值。
-
如果ggplot对象在列表
x中,可以使用gridExtra::grid.arrange(grobs = x)