if_
conditionsif_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.1212511 -0.5875503 -1.4027538 1.6908526 -1.5478727 0.4204617
#> [7] -0.6937552 -0.5577601 -0.9358351 0.7242602
The defaut for all .p
is isTRUE()
. So you can:
a <- c(FALSE, TRUE, TRUE, TRUE)
if_any(a, .f = ~ "nop!")
#> [1] "nop!"
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"