我正在尝试在本地函数中使用 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
from的一种方法dplyr
, whereenquo
接受字符串并转换为通过在,等中取消引用(或)quosure
来评估的字符串。UQ
!!
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
我让它像这样工作:
testFunction <- function(df, x) {
df %>%
group_by(get(x)) %>%
summarize(mean.Petal.Width = mean(Petal.Width))
}
testFunction(iris,"Species")
我更改x
为get(x)
,并更改Species
为"Species"
in testFunction(iris,...)
。