Применение функции к выходу dplyr group_by

Я хотел бы выделить большой массив данных и создать ggplot для каждой группировки. Звучит как идеальный кандидат на dplyr, но я сталкиваюсь с проблемами, вызывающими функции на group_by Результаты. Любые советы будут с благодарностью.

# what I want to do using base functions: "groupby" the elements in a column 
# and create/save a plot for each group
for (i in levels(iris$Species)){
  df = iris[iris$Species == i,]
  p <- ggplot(df, aes(x=Sepal.Length, y=Sepal.Width) + geom_point())
  ggsave(p, filename=paste(i,".pdf",sep=""))
}

# I'm trying to get something like this using dplyr
library(dplyr)
iris %>%
  group_by(Species) %>%
  do({
      p <- ggplot(., aes(x=Sepal.Length, y=Sepal.Width) + geom_point())
      ggsave(p, filename=paste(quote(Species),".pdf",sep=""))
     })

1 ответ

Решение

Ну, у вас есть проблема с круглыми скобками и проблема с именами файлов, так что, возможно, это одна из тех, на которые вы ссылаетесь. Я предполагаю, что

iris %>%
  group_by(Species) %>%
  do({
      p <- ggplot(., aes(x=Sepal.Length, y=Sepal.Width)) + geom_point()
      ggsave(p, filename=paste0(unique(.$Species),".pdf"))
     })

бы исправить вашу проблему.

Другие вопросы по тегам