在一个函数中使用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_,它给了我一个整个数据集的总结。 有人有线索我怎么能解决这个问题?
提前致谢!
答
这里是与新enquo
从dplyr
,其中enquo
取串并转换为quosure
它获取通过在group_by
unquoting(UQ
或!!
)来评价工作的一种方式,mutate
,summarise
等
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
答
我得到了它这样的工作:
testFunction <- function(df, x) {
df %>%
group_by(get(x)) %>%
summarize(mean.Petal.Width = mean(Petal.Width))
}
testFunction(iris,"Species")
我改变x
到get(x)
,并Species
到"Species"
在testFunction(iris,...)
。
很酷。这很有用,非常感谢。你有一个参考网址涵盖了这个? – RoseS
@RoseS你可以查看[这里](http://dplyr.tidyverse.org/articles/programming.html#quoting) – akrun