我正在尝试在本地函数中使用dplyr的group_by,例如:
testFunction <- function(df, x) {
df %>%
group_by(x) %>%
summarize(mean.Petal.Width = mean(Petal.Width))
}
testFunction(iris, Species)
我得到一个错误&#34; ...未知变量分组依据:x&#34; 我尝试过group_by_,它给了我整个数据集的摘要。 有人知道如何解决这个问题吗?
提前致谢!
答案 0 :(得分:2)
以下是使用enquo
中的新dplyr
的一种方法,其中enquo
获取字符串并转换为quosure
,通过取消引用来评估UQ
{{1} } {}}或!!
} group_by
,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
答案 1 :(得分:0)
我让它像这样工作:
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,...)
。