are_na() checks for missing values in a vector and is equivalent
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
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)
An object to test
The scalar predicates accept non-vector inputs. They are equivalent
is_null() in that respect. In contrast the vectorised
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))#>  FALSE FALSE TRUEare_na(c(1L, NA, 3L))#>  FALSE TRUE FALSE# is_na() checks for scalar input and works for all types is_na(NA)#>  TRUEis_na(na_dbl)#>  TRUEis_na(character(0))#>  FALSE# There are typed versions as well: is_lgl_na(NA)#>  TRUEis_lgl_na(na_dbl)#>  FALSE