①forループの段階で入れ子にならないようにする
の方法です。
コメントの通りですが、もとの形では plotlist[Species][production.area] という形になっているので、それを plotlist[Species"*"production.area] という形の入れ子ではない状態で保存しています。
plotlist=NULL
for(i in unique(iris$Species)){
for(j in unique(iris$production.area)){
+ # [[paste(i, j, sep="*")]] とすることで
+ # Species*production.area の名前で1次元配列として保存する
+ (plotlist[[paste(i, j, sep="*")]]=iris %>%
- (plotlist[[i]][[j]]=iris %>%
filter(Species==i) %>%
filter(production.area==j) %>%
ggplot(aes(x=Sepal.Length, y=Sepal.Width))+
geom_point()+
labs(title=paste0(i,"*",j))
)
}
}
grid.arrange(grobs=plotlist)
③リストに格納せずにprint()し、par()で並べる
について、R のグラフ描画システムとして graphics と grid が存在し、par() は前者の上に、 ggplot2 は後者の上に成り立っています。
なので ggplot2 で描画している以上は par() で並べることは難しいのではないかなと思っています。