Мы можем преобразовать в выражение (quo
) и оценить (!!
). Здесь мы предполагаем, что в filter
my_func <- function(x, ...){
df %>%
dplyr::filter(!! quo(...) == x)
}
my_func('a', col1)
# A tibble: 1 x 2
# col1 col2
# <chr> <dbl>
#1 a 1
будет передан только один столбец, тогда может быть лучше использовать filter_at
Может быть также лучше использовать {{}}
, если мы можем передать в качестве аргумента вместо ...
my_func <- function(x, coln) {
df %>%
filter({{coln}} == x)
}
my_func('a', col1)