r语言 - 将变量传递给使用 'enquo()' 的函数



我有一个概念问题。我想将变量传递给一个函数,该函数通过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)
}

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

相关内容

  • 没有找到相关文章

最新更新