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 NULLs.
coalesce(..., .ptype =NULL, .size =NULL)
Arguments
...: <dynamic-dots>
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 ....
Returns
A vector with the same type and size as the common type and common size of the vectors in ....
Examples
# Use a single value to replace all missing valuesx <- sample(c(1:5,NA,NA,NA))coalesce(x,0L)# The equivalent to a missing value in a list is `NULL`coalesce(list(1,2,NULL), list(NA))# Or generate a complete vector from partially missing piecesy <- c(1,2,NA,NA,5)z <- c(NA,NA,3,4,5)coalesce(y, z)# Supply lists by splicing them into dots:vecs <- list( c(1,2,NA,NA,5), c(NA,NA,3,4,5))coalesce(!!!vecs)
See Also
na_if() to replace specified values with an NA. tidyr::replace_na() to replace NA with a value.