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(...)<dynamic-dots> Vectors. Inputs should be
recyclable (either be length 1 or same length as the longest vector) and
coercible to a common type. If data frames, they are coalesced column by
column.
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.
tidyr::replace_na() to replace NA with a value
# Use a single value to replace all missing values
x <- sample(c(1:5, NA, NA, NA))
coalesce(x, 0L)
#> [1] 3 1 2 0 4 0 5 0
# 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 with dynamic dots
vecs <- list(
c(1, 2, NA, NA, 5),
c(NA, NA, 3, 4, 5)
)
coalesce(!!!vecs)
#> [1] 1 2 3 4 5