Я хочу создать функцию, которая принимает аргумент группировки. Который может быть одной или несколькими переменными. Я хочу, чтобы это выглядело так:
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