Given a set of vectors, coalesce()
finds the first non-missing value at
each position. It's inspired by the SQL COALESCE
function which does the
same thing for SQL NULL
s.
Arguments
- ...
-
One or more vectors. These will be recycled against each other, and will be cast to their common type.
- .ptype
An optional prototype declaring the desired output type. If supplied, this overrides the common type of the vectors in
...
.- .size
An optional size declaring the desired output size. If supplied, this overrides the common size of the vectors in
...
.
Value
A vector with the same type and size as the common type and common
size of the vectors in ...
.
See also
na_if()
to replace specified values with an NA
.
tidyr::replace_na()
to replace NA
with a value.
Examples
# Use a single value to replace all missing values
x <- sample(c(1:5, NA, NA, NA))
coalesce(x, 0L)
#> [1] 2 3 4 0 0 0 5 1
# The equivalent to a missing value in a list is `NULL`
coalesce(list(1, 2, NULL), list(NA))
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 2
#>
#> [[3]]
#> [1] NA
#>
# Or generate a complete vector from partially 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