3

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

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

testFunction(iris, Species)

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

提前致谢!

4

2 回答 2

2

这是使用新enquofrom的一种方法dplyr, whereenquo接受字符串并转换为通过在,等中取消引用(或)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
于 2017-06-20T18:16:20.147 回答
0

我让它像这样工作:

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

testFunction(iris,"Species")

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

于 2017-06-20T18:12:24.827 回答