【发布时间】:2020-04-23 23:16:02
【问题描述】:
我想创建一个带有分组参数的函数。可以是单个或多个变量。我希望它看起来像这样:
wanted <- function(data, groups, other_params){
data %>% group_by( {{groups}} ) %>% count()
}
这仅在给定单个组时有效,但在有多个组时会中断。我知道可以将以下内容与省略号 ... 一起使用(但我想要语法 groups = something):
not_wanted <- function(data, ..., other_params){
data %>% group_by( ... ) %>% count()
}
完整代码如下:
library(dplyr)
library(magrittr)
iris$group2 <- rep(1:5, 30)
wanted <- function(data, groups, other_params){
data %>% group_by( {{groups}} ) %>% count()
}
not_wanted <- function(data, ..., other_params){
data %>% group_by( ... ) %>% count()
}
# works
wanted(iris, groups = Species )
not_wanted(iris, Species, group2)
# doesn't work
wanted(iris, groups = vars(Species, group2) )
wanted(iris, groups = c(Species, group2) )
wanted(iris, groups = vars("Species", "group2") )
# Error: Column `vars(Species, group2)` must be length 150 (the number of rows) or one, not 2
【问题讨论】:
-
您能否澄清一下应该为
group工作的变量,length >= 1的字符向量?另外,为什么不在count()呼叫中进行分组 -
只需将您的
{{...}}更改为!!!- 然后使用vars(Species, group2)的呼叫将起作用 - 请参阅 dplyr.tidyverse.org/articles/…