首页 文章

在函数中使用dplyr group_by

提问于
浏览
2

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

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

testFunction(iris, Species)

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

提前致谢!

2 回答

  • 1

    这是使用 dplyr 的新 enquo 的一种方法,其中 enquo 获取字符串并转换为 quosure ,通过在 group_bymutatesummarise 等中取消引用( UQ!! )进行评估 .

    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
    
  • 0

    我让它像这样工作:

    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" .

相关问题