Skip to contents

These functions are wrappers around vctrs::vec_pany() and vctrs::vec_pall(), variants of any() and all() that work in parallel on multiple inputs at once. They work similarly to how pmin() and pmax() are parallel variants of min() and max().

pany_na() and pall_na() are variants that check for NA values in parallel.

Usage

pany(..., .na = NA)

pall(..., .na = NA)

pany_na(..., .nan = FALSE)

pall_na(..., .nan = FALSE)

Arguments

...

[logical() each] Logical vectors with the same size.

.na

[TRUE | FALSE | NA] What to return for NA values.

.nan

[TRUE | FALSE] Should NaN values be treated as NA?

Value

[logical()] A logical vector of the same size as the inputs.

Examples

a <- c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, NA, NA, NA)
b <- c(TRUE, FALSE, NA, TRUE, FALSE, NA, TRUE, FALSE, NA)

# Default behavior treats missings like `|` does:
pany(a, b)
#> [1]  TRUE  TRUE  TRUE  TRUE FALSE    NA  TRUE    NA    NA
a | b
#> [1]  TRUE  TRUE  TRUE  TRUE FALSE    NA  TRUE    NA    NA

# Default behavior treats missings like `&` does:
pall(a, b)
#> [1]  TRUE FALSE    NA FALSE FALSE FALSE    NA FALSE    NA
a & b
#> [1]  TRUE FALSE    NA FALSE FALSE FALSE    NA FALSE    NA

# Remove missings from the computation, like `na_rm = TRUE`:
pany(a, b, .na = FALSE)
#> [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
(a & !is.na(a)) | (b & !is.na(b))
#> [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE

pall(a, b, .na = TRUE)
#> [1]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
(a | is.na(a)) & (b | is.na(b))
#> [1]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE

# Check for missings in parallel:
pany_na(a, b) #> c(FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE)
#> [1] FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
pall_na(a, b) #> c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE)
#> [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE