Передача переменных в функции, которые используют `enquo ()` - PullRequest
0 голосов
/ 17 октября 2018

У меня есть концептуальная проблема.Я хочу передать переменные в функцию, которая превращает некоторые из этих переменных в предложения через 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)
}

1 Ответ

0 голосов
/ 17 октября 2018

Единственный способ, которым это возможно, это взять ... и переслать их в нижнюю функцию.Именованные аргументы должны заключаться в кавычки и не заключаться в кавычки на каждом этапе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...