Given a set of vectors, coalesce() finds the first non-missing value at each position. This is inspired by the SQL COALESCE function which does the same thing for NULLs.

coalesce(...)

## Arguments

... Vectors. All inputs should either be length 1, or the same length as the first argument. These dots are evaluated with explicit splicing.

## Value

A vector the same length as the first ... argument with missing values replaced by the first non-missing value.

na_if() to replace specified values with a NA.

## Examples

# Use a single value to replace all missing values
x <- sample(c(1:5, NA, NA, NA))
coalesce(x, 0L)#> [1] 0 2 1 0 3 0 5 4
# Or match together a complete vector from missing pieces
y <- c(1, 2, NA, NA, 5)
z <- c(NA, NA, 3, 4, 5)
coalesce(y, z)#> [1] 1 2 3 4 5
# Supply lists by splicing them into dots:
vecs <- list(
c(1, 2, NA, NA, 5),
c(NA, NA, 3, 4, 5)
)
coalesce(!!! vecs)#> [1] 1 2 3 4 5