Я хочу создать функцию, которая принимает список переменных (фрейма данных) в качестве одного из своих параметров. Мне удалось заставить его работать частично, но когда я добираюсь до group_by / count, все рушится. Как я могу это сделать ??
## Works
f1 <- function(dfr, ..., split = NULL) {
dots <- rlang::enquos(...)
split <- rlang::enquos(split)
dfr %>%
select(!!!dots, !!!split) %>%
gather('type', 'score', -c(!!!split))
}
## does not work
f2 <- function(dfr, ..., split = NULL) {
dots <- rlang::enquos(...)
split <- rlang::enquos(split)
dfr %>%
select(!!!dots, !!!split) %>%
gather('type', 'score', -c(!!!split))
count(!!!split, type, score)
}
Я хотел бы сделать что-то вроде
mtcars %>% f2(drat:qsec)
mtcars %>% f2(drat:qsec, split = gear)
mtcars %>% f2(drat:qsec, split = c(gear, carb)) ## ??
Эти вызовы с f1()
все работают, но для f2
ни одна из команд Работа. Все они в конечном итоге с Error in !split : invalid argument type
. То, что f2(drat:qsec)
(сразу) не работает без аргумента split
, меня это не слишком удивляет, но как заставить работать второй и третий комментарий?