Rlang中有一个非常微妙的(且非常令人困惑的)区别:quos不是quosure对象!换句话说:


quo()enquo()返回保证金
quos()enquos()返回quosureS,而不是quosure(is_quosure(enquos(...))返回FALSE


等同于quo_is_null()quo_is_missing()的等价货币是多少?特别是,我想测试由...捕获的enquos(...)参数是否为null /丢失,该怎么办?



library(rlang)
fo1 <- function(df, var1) {
  dot_vars <- rlang::enquo(var1)
  quo_is_missing(dot_vars)
}

fo2 <- function(df, ...) {
  dot_vars <- rlang::enquos(...)
  quo_is_missing(dot_vars)
}

fo1()
#> [1] TRUE
fo2()
#> `quo` must be a quosure

最佳答案

使用length(dot_vars)确定其长度是否为0。

08-19 22:06