if_ conditions
if_none(), if_any() and if_all() test the elements of the list.
if_all(1:10, ~ .x < 11, ~ return(letters[1:10]))
#> [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
if_any(1:10, is.numeric, ~"Yay!")
#> [1] "Yay!"
if_none(1:10, is.character, ~ rnorm(10))
#> [1] -1.400043517 0.255317055 -2.437263611 -0.005571287 0.621552721
#> [6] 1.148411606 -1.821817661 -0.247325302 -0.244199607 -0.282705449The defaut for all .p is isTRUE(). So you can:
if_then() performs a simple “if this then do that”:
if_then(1, is.numeric, ~"nop!")
#> [1] "nop!"if_not() runs .f if .p(.x) is not TRUE :
if_not(.x = 1, .p = is.character, ~".x is not a character")
#> [1] ".x is not a character"And if_else() is a wrapper around base::ifelse().
If you want these function to return a value, you need to wrap these values into a mapper / a function. E.g, to return a vector, you’ll need to write if_then(1, is.numeric, ~ "Yay").
a <- if_else(1, is.numeric, ~"Yay", ~"Nay")
a
#> [1] "Yay"