Я пытаюсь записать функцию, которая выводит ggplot на печать facet_wrap
выведитесь на печать по нескольким страницам. Это - просто взлом, поскольку эта функция, кажется, находится в 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()
функции, то, что для цикла, кажется, не ожидает ggplot, чтобы сделать его вещь и пламя через его цикл очень быстро и производит недопустимый PDF.
Если я установил i = 1
, запустите pdf()
, выполните вышеупомянутый код в для цикла, затем установите i=2
, затем выполните код, и так далее пока я не буду скучать (i=3
) затем выключите устройство, получающийся PDF является блестящим.
Существует ли способ, которым я могу добраться, чтобы цикл ожидал заключительной строки, чтобы закончить выводиться на печать прежде, чем перейти на следующее повторение?
Я думаю, проблема в том, что вам нужно print () вокруг вашей последней строки (p + ...), чтобы заставить ее печатать на устройство внутри цикла for. . .
Exactly. Страница 39 книги ggplot2 говорит нам, что когда вы создаете объекты ggplot2, вы можете "Вывести его на экран с помощью print(). Это происходит автоматически при интерактивном выполнении, но внутри цикла или функции вам придется выводить print() самостоятельно".