我试图从一个嵌套的嵌套框架中的列表列中保存ggplots,文件名中有嵌套变量,这样我就知道哪个图对应于哪个数据.
我使用的方法适用于我从嵌套的数据帧中保存CSV文件,但不适用于ggploy对象.
data("mtcars")
temp_dir <- tempfile()
dir.create(temp_dir)
library(tidyr) # for nest function
plot_fun <- function(x){
p <- ggplot(data = x, aes(x = wt, y = mpg)) +
geom_point()
return(p)
}
cyl_mtcars <- mtcars %>%
nest(data = -cyl) %>%
mutate(plots = map(.x = data, .f = plot_fun)
)
head(cyl_mtcars)
它产生了
# A tibble: 3 × 3
cyl data plots
<dbl> <list> <list>
1 6 <tibble [7 × 10]> <gg>
2 4 <tibble [11 × 10]> <gg>
3 8 <tibble [14 × 10]> <gg>
但是当我试着把这些数字保存下来的时候
cyl_mtcars %>%
pwalk(
function(cyl, plots) ggsave(filename = file.path(temp_dir, glue("{cyl}.png")), plot = plots)
)
我得到这个错误
Error in `pmap()` at purrr/R/pmap.R:148:2:
ℹ In index: 1.
Caused by error in `.f()`:
! unused argument (data = .l[[2]][[i]])
Run `rlang::last_trace()` to see where the error occurred.```