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。