Передача переменных в функции, которые используют `enquo()`
У меня есть концептуальная проблема. Я хочу передать переменные в функцию, которая превращает некоторые из этих переменных в выражения через enquo
(от dplyr
/ rlang
пакеты). Тем не менее, я хочу сделать это с помощью других функций.
Рассмотрим следующее, у которого есть функция более низкого уровня (та, которая использует enquo()
) и более высокого уровня, который питается этим. Когда он передает свою переменную q
в lower_function
(например, пользователь звонит higher_func1(mtcars, cyl==6)
), значение new_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)
}
1 ответ
Единственный способ, которым это возможно, это принимая ...
и переадресация их на нижнюю функцию. Именованные аргументы должны быть указаны и не заключены в кавычки на каждом этапе.