【发布时间】:2019-03-21 13:38:50
【问题描述】:
我有一个概念问题。我想将变量传递给一个函数,该函数通过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)
}
【问题讨论】:
标签: r dplyr tidyeval quasiquotes