0

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

考虑以下内容,它有一个较低级别的函数(使用 的函数enquo())和一个提供给它的较高级别的函数。当它将其变量传递qlower_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)
}
4

1 回答 1

2

唯一可行的方法是...将它们转发到较低的功能。命名参数必须在每一步都被引用和不引用。

于 2018-10-17T07:38:49.480 回答