Сохранение списка участков по их именам ()

Допустим, у меня есть список созданных мной графиков.

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

1 ответ

Решение

Вероятно, вам нужно передать имена списка:

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

kohske сенсационный! Ниже purrr 0.3.4 версия для тех, кто предпочитает работать в tidyverse. Также создается временный каталог для хранения графиков, так как ggsave по умолчанию сохраняется в рабочий каталог.

map(names(plots), function(.x) {
    ggsave(
        path = "tmp/",
        filename = paste0(.x, ".png"),
        plot = plots[[.x]]
        )
    })
Другие вопросы по тегам