在一个函数中使用dplyr GROUP_BY

问题描述:

我想使用dplyr的GROUP_BY在当地的功能,例如:在一个函数中使用dplyr GROUP_BY

testFunction <- function(df, x) { 
    df %>% 
group_by(x) %>% 
summarize(mean.Petal.Width = mean(Petal.Width)) 
} 

testFunction(iris, Species) 

,我得到一个错误“...未知变量按组:X” 我我试了group_by_,它给了我一个整个数据集的总结。 有人有线索我怎么能解决这个问题?

提前致谢!

这里是与新enquodplyr,其中enquo取串并转换为quosure它获取通过在group_by unquoting(UQ!!)来评价工作的一种方式,mutatesummarise

library(dplyr) 
testFunction <- function(df, x) { 
x <- enquo(x) 
    df %>% 
    group_by(!! x) %>% 
    summarize(mean.Petal.Width = mean(Petal.Width)) 
} 

testFunction(iris, Species) 
# A tibble: 3 x 2 
#  Species mean.Petal.Width 
#  <fctr>   <dbl> 
#1  setosa   0.246 
#2 versicolor   1.326 
#3 virginica   2.026 
+1

很酷。这很有用,非常感谢。你有一个参考网址涵盖了这个? – RoseS

+0

@RoseS你可以查看[这里](http://dplyr.tidyverse.org/articles/programming.html#quoting) – akrun

我得到了它这样的工作:

testFunction <- function(df, x) { 
         df %>% 
         group_by(get(x)) %>% 
         summarize(mean.Petal.Width = mean(Petal.Width)) 
       } 

testFunction(iris,"Species") 

我改变xget(x),并Species"Species"testFunction(iris,...)

+0

我尝试了20件事,所以不要问我为什么这么做...;) – CPak

+0

嗯,我认为'get(x)'有帮助......它似乎明白了现在要分组的东西。现在,我收到错误“.... object”Species“not found”,所以在调用函数时我无法使用或不使用引号。你有一个想法,为什么这可能适合你?哈!我刚刚看到“...不要问我它是如何工作的” – RoseS

+0

你有没有'dplyr'加载?更新'dplyr'?你也可以尝试'akrun'答案...应该是相当的。 – CPak