В рланге есть довольно тонкое (и очень запутанное) различие в том, что ... выражения не являются объектами определения!Другими словами:
quo()
и enquo()
возвращают условие quos()
и enquos()
возвращают условие S , а не выражение(is_quosure(enquos(...))
возвращает FALSE
)
Что эквивалентно quo_is_null()
и quo_is_missing()
для кавычек?В частности, я хотел бы проверить, что аргумент ...
, захваченный enquos(...)
, равен нулю / отсутствует, как мне это сделать?
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