在函数中使用 dplyr group_by

Using dplyr group_by in a function

我正在尝试在本地函数中使用 dplyr 的 group_by,例如:

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

testFunction(iris, Species)

我收到错误消息“...分组依据的未知变量:x” 我试过 group_by_ 它给了我整个数据集的摘要。 有人知道我该如何解决这个问题吗?

提前致谢!

我是这样工作的:

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

testFunction(iris,"Species")

我在 testFunction(iris,...) 中将 x 更改为 get(x),并将 Species 更改为 "Species"

这是使用来自 dplyr 的新 enquo 的一种方法,其中 enquo 获取字符串并转换为 quosure,后者通过取消引号 (UQ!!) 在 group_bymutatesummarise

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