[英]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_,它给了我整个数据集的摘要。 有人知道如何解决这个问题吗?
提前致谢!
这里是新的工作方法之一enquo
从dplyr
,其中enquo
采取串并转换成quosure
其获取评估由unquoting( 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
更改为testFunction(iris,...)
"Species"
testFunction(iris,...)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.