按名称保存图表列表()

时间:2011-07-15 01:28:29

标签: r ggplot2

假设我有一个我创建的情节列表。

library(ggplot2)
plots <- list()
plots$a <- ggplot(cars, aes(speed, dist)) + geom_point()
plots$b <- ggplot(cars, aes(speed)) + geom_histogram()
plots$c <- ggplot(cars, aes(dist)) + geom_histogram()

现在,我想保存所有这些,用各自的名称(图表)元素标记每个。

lapply(plots, 
       function(x) { 
         ggsave(filename=paste(...,".jpeg",sep=""), plot=x)
         dev.off()
         }
       )

我将用什么替换“...”,以便在我的工作目录中将图保存为:

a.jpeg
b.jpeg
c.jpeg

2 个答案:

答案 0 :(得分:17)

可能你需要传递list的名字:

lapply(names(plots), 
  function(x)ggsave(filename=paste(x,".jpeg",sep=""), plot=plots[[x]]))

答案 1 :(得分:0)

@kohske的答案令人震惊!以下是purrr 0.3.4版本,适合那些可能更喜欢在tidyverse中工作的人。此外,由于ggsave默认保存到工作目录,因此会创建一个临时目录来保存绘图。

map(names(plots), function(.x) {
    ggsave(
        path = "tmp/",
        filename = paste0(.x, ".png"),
        plot = plots[[.x]]
        )
    })