Как проверить нулевой или отсутствующий для кавычек типа enquos - PullRequest
4 голосов
/ 07 мая 2019

В рланге есть довольно тонкое (и очень запутанное) различие в том, что ... выражения не являются объектами определения!Другими словами:

  • 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

1 Ответ

4 голосов
/ 07 мая 2019

Используйте length(dot_vars), чтобы определить, имеет ли он длину 0.

...