我有一个概念问题。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)
}