我有一个for循环,每次循环都会为不同的参数集创建不同的ggplot。现在我一次打印N个不同的图表。我想保存它们,这样我就可以使用网格了。安排把它们都放在一页上。这不起作用:
p <- vector(length = N)
for(i in 1:N)
p[i] <- ggplot( ........
...
...
grid.arrange(p[1], p[2], .. p[N], nrow = 4)
有没有办法保存绘图,以便以后在循环外的页面上绘制绘图网格,或者有没有办法在循环之前设置网格规范,并在执行循环时动态生成网格绘图(例如,par与绘图的使用方式(?
您很少希望在R中使用for循环。在R的lapply()
中。一步到位:
do.call(
grid.arrange,
lapply(data, function(f){
ggplot(f, ...)
}
)
编辑:如果要存储列表以供以后打印:
plot_objects <- lapply(data, function(f) {
ggplot(f, ...)
})
do.call(grid.arrange, plot_objects)
这可以通过启动list
来存储绘图对象而不是vector
来解决
p <- vector('list', N)
for(i in seq_len(N)) {
p[[i]] <- ggplot(...)
}
grid.arrange(p[[1]], p[[2]], ..., p[[N]], nrow = 4)