Я пытаюсь добавить возможность фильтрации по динамическому числу переменных в dplyr.Я хочу, чтобы пользователь мог просто вводить команды в вызове функции, т.е. ...
- пример, приведенный ниже, должен помочь.Пользователь должен иметь возможность сегментировать seg1 == 'b'
и seg2 == 'd'
, просто вводя их в функцию my_func(example_data, seg1 = 'b', seg2 = 'd')
, но все попытки не увенчались успехом.Это легко сделать со стандартным SQL, просто не знакомым с форматированием NSE.
library('tidyverse')
example_data = tibble(seg1 = c('a','b','b','c'),
seg2 = c('d', 'd', 'd', 'e'),
out = c(1, 10, 20, 40))
my_func = function(dat, ...){
args = list(...)
arg_names = names(args)
### ????
dat = dat %>%
filter(???)
### ????
return(dat)
}
my_func(example_data, seg1 = 'b', seg2 = 'd')
# Desired output
> example_data %>% filter(seg1 == 'b', seg2 == 'd')
# A tibble: 2 x 3
seg1 seg2 out
<chr> <chr> <dbl>
1 b d 10
2 b d 20