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.

See also

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