Skip to content

Note: This operator is now out of scope for rlang. It will be replaced by a vctrs-powered operator (probably in the funs package) at which point the rlang version of %|% will be deprecated.

This infix function is similar to %||% but is vectorised and provides a default value for missing elements. It is faster than using base::ifelse() and does not perform type conversions.


x %|% y



The original values.


The replacement values. Must be of length 1 or the same length as x.

See also


c("a", "b", NA, "c") %|% "default"
#> [1] "a"       "b"       "default" "c"      
c(1L, NA, 3L, NA, NA) %|% (6L:10L)
#> [1]  1  7  3  9 10