У меня есть концептуальная проблема.Я хочу передать переменные в функцию, которая превращает некоторые из этих переменных в предложения через enquo
(из пакетов dplyr
/ rlang
).Однако я хочу сделать это с помощью других функций.
Рассмотрим следующее, которое имеет функцию более низкого уровня (ту, которая использует enquo()
) и функцию более высокого уровня, которая вводит ее.Когда он передает свою переменную q
в lower_function
(например, пользователь вызывает higher_func1(mtcars, cyl==6)
), значение new_q
будет выражением 'q'.
Как сохранить пользовательские входы функции более высокого уровня, чтобы они могли быть приняты enquo()
? Я знаю, что есть обходные пути, где я бы изменил lower_function
, ноМеня это не интересует.Меня интересует решение, которое не меняет функцию с помощью enquo()
.
library(dplyr)
library(rlang)
higher_func1 <- function(df, q) {
# Need to do something to `q` here
lower_function(df, q, dplyr::filter)
}
lower_function <- function(df, qq, f) {
new_q <- rlang::enquos(qq)
f(df, !!! new_q)
}