将函数应用于dplyr的group_by的输出

zac*_*ach 3 r ggplot2 dplyr

我想将大型数据框子集化并创建每个分组的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=""))
     })
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 10

好吧,你有一个括号问题和一个文件命名问题所以也许它是你所指的那个问题之一.我在假设

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

会解决你的问题.