考虑这个funny
示例
mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
x = c(1,2,3,5,6,7),
y = c(3,5,6,4,3,2))
> mydata
# A tibble: 6 x 3
group x y
<chr> <dbl> <dbl>
1 a 1 3
2 a 2 5
3 a 3 6
4 b 5 4
5 b 6 3
6 b 7 2
在这里,我可以按组nest()
并将基于组的ggplot
存储到list-column
中。疯狂的事情。
> mydata %>% group_by(group) %>%
+ nest() %>%
+ mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = x)) + geom_point()))
# A tibble: 2 x 3
group data myplot
<chr> <list> <list>
1 a <tibble [3 x 2]> <S3: gg>
2 b <tibble [3 x 2]> <S3: gg>
但是,我想使用map
将所有这些图表打印到一个pdf
中。也就是说,每组一页pdf
。
在这里我很茫然。我怎样才能做到这一点? 谢谢!
答案 0 :(得分:1)
只需打开pdf设备并进行打印:)
library(tidyverse)
mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
x = c(1,2,3,5,6,7),
y = c(3,5,6,4,3,2))
mydata2 <- mydata %>% group_by(group) %>%
nest() %>%
mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = x)) + geom_point()))
pdf()
print(mydata2$myplot)
dev.off()
作为@aosmith注释,如果以交互方式使用R,则可以跳过打印调用,但是要小心,如果以后将其包装到一个函数中将不再起作用,因此建议您保持露骨。
如果要链接它:
pdf()
mydata %>% group_by(group) %>%
nest() %>%
mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = x)) + geom_point())) %>%
pull(myplot) %>%
print
dev.off()
pdf
的第一个参数是打印文件的路径,默认情况下为"Rplots.pdf"
,因此它将位于您的工作文件夹中。有关更多信息,请参见?pdf
。