Skip to content

vec_equal_na() tests a special case: equality with NA. It is similar to is.na but:

  • Considers the missing element of a list to be NULL.

  • Considered data frames and records to be missing if every component is missing. This preserves the invariant that vec_equal_na(x) is equal to vec_equal(x, vec_init(x), na_equal = TRUE).

Usage

vec_equal(x, y, na_equal = FALSE, .ptype = NULL)

vec_equal_na(x)

Arguments

x, y

Vectors with compatible types and lengths.

na_equal

Should NA values be considered equal?

.ptype

Override to optionally specify common type

Value

A logical vector the same size as. Will only contain NAs if na_equal is FALSE.

Examples

vec_equal(c(TRUE, FALSE, NA), FALSE)
#> [1] FALSE  TRUE    NA
vec_equal(c(TRUE, FALSE, NA), FALSE, na_equal = TRUE)
#> [1] FALSE  TRUE FALSE
vec_equal_na(c(TRUE, FALSE, NA))
#> [1] FALSE FALSE  TRUE

vec_equal(5, 1:10)
#>  [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
vec_equal("d", letters[1:10])
#>  [1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE

df <- data.frame(x = c(1, 1, 2, 1, NA), y = c(1, 2, 1, NA, NA))
vec_equal(df, data.frame(x = 1, y = 2))
#> [1] FALSE  TRUE FALSE    NA    NA
vec_equal_na(df)
#> [1] FALSE FALSE FALSE FALSE  TRUE