【发布时间】:2016-08-30 02:48:28
【问题描述】:
我正在尝试编写一个在多个页面上绘制 ggplot facet_wrap 的函数。这只是一个 hack,因为此功能似乎在 ggplot2 功能待办事项列表中。我做了一些小的计算来找到我需要的页数,我每页需要的data.frame 的行数等等。我非常有信心这一切都有效。
pdf(filename)
for (i in seq(num_pages)){
slice = seq(((i-1)*num_rows)+1,(i*num_rows))
slice = slice[!(slice > nrow(df.merged))]
df.segment=df.merged[slice,]
p <- ggplot(df.segment, aes(y=mean,x=phenotype))
p <- p + geom_bar(stat="identity",fill="white",colour="black")
p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets)
}
dev.off()
我的问题是,通过在 pdf() 和 dev.off() 函数之间将它全部包装在这样的 for 循环中,for 循环似乎并没有等待 ggplot 执行它的操作,并快速通过其循环并输出无效的PDF。
如果我设置i = 1,则启动pdf(),在for循环中运行上面的代码,然后设置i=2,然后运行代码,依此类推,直到我感到无聊(i=3)然后转关闭设备,生成的 PDF 非常棒。
有没有办法让 for 循环等待最后一行完成绘图,然后再进行下一次迭代?
【问题讨论】: