在R中,是否有一种从嵌套数据中保存绘图和图纸的简单方法



假设我有以下数据集,其中包含要逐一保存的图纸和绘图:

library(tidyverse)
data_set <- iris %>%
nest(data = -Species) %>%
mutate(
plot = map(
data,
~ ggplot(., aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point()
)
)

目前,如果我想保存data_set$plotdata_set$data,我必须单独保存:

# save plots
data_set %>%
{
walk2(
.$Species, .$plot,
~ ggsave(
filename = paste0(.x, ".png"),
plot = .y
)
)
}
# save sheets    
data_set %>%
{
walk2(
.$Species, .$data,
~ write.csv(
.y,
paste0(.x, ".csv")
)
)
}

问题:

有没有一种方法可以在同一管道中做到这一点?类似于:

data_set %>%
{
# plot saving function
} %>%
{
# sheet saving function
}

甚至

data_set %>%
pivot_longer(
!Species,
names_to = "set",
values_to = "them_all"
) %>%
{
# one function to save them_all
}

您可以在{purrr}中使用pwalk()函数

purrr::pwalk(
.l = list(species = data_set$Species,
data = data_set$data,
plot = data_set$plot),
.f = function(species, data, plot){
write.csv(data, paste0(species, ".csv"))
ggsave(filename = paste0(species, ".png"), plot = plot)
}
)

最新更新