are_na()
checks for missing values in a vector and is equivalent
to base::is.na()
. It is a vectorised predicate, meaning that its
output is always the same length as its input. On the other hand,
is_na()
is a scalar predicate and always returns a scalar
boolean, TRUE
or FALSE
. If its input is not scalar, it returns
FALSE
. Finally, there are typed versions that check for
particular missing types.
are_na(x) is_na(x) is_lgl_na(x) is_int_na(x) is_dbl_na(x) is_chr_na(x) is_cpl_na(x)
x | An object to test |
---|
The scalar predicates accept non-vector inputs. They are equivalent
to is_null()
in that respect. In contrast the vectorised
predicate are_na()
requires a vector input since it is defined
over vector values.
These functions might be moved to the vctrs package at some point. This is why they are marked as questioning.
# are_na() is vectorised and works regardless of the type are_na(c(1, 2, NA)) #> [1] FALSE FALSE TRUE are_na(c(1L, NA, 3L)) #> [1] FALSE TRUE FALSE # is_na() checks for scalar input and works for all types is_na(NA) #> [1] TRUE is_na(na_dbl) #> [1] TRUE is_na(character(0)) #> [1] FALSE # There are typed versions as well: is_lgl_na(NA) #> [1] TRUE is_lgl_na(na_dbl) #> [1] FALSE