将变量传递给使用 enquo() 的函数

Passing variables to functions that use `enquo()`

我有一个概念问题。我想将变量传递给一个函数,该函数通过 enquo(来自 dplyr/rlang 包)将其中一些变量转换为 quosures。但是,我想通过其他功能来实现。

考虑以下内容,它具有较低级别的功能(使用 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)
}

唯一可行的方法是获取 ... 并将它们转发给较低的函数。每一步都必须引用和取消引用命名参数。