if_else2 {tidyplus}R Documentation

Vectorised if else.

Description

Vectorised if else that if true returns first possibility otherwise returns second possibility (even if the condition is a missing value). When searching character vectors an alternative solution is to use str_detect2().

Usage

if_else2(condition, true, false)

Arguments

condition

Logical vector

true, false

Values to use for TRUE and FALSE values of condition. They must be either the same length as condition, or length 1. They must also be the same type: if_else() checks that they have the same type and same class. All other attributes are taken from true.

Value

Where condition is TRUE, the matching value from true, where it's FALSE or NA, the matching value from false.

See Also

ifelse() and dplyr::if_else().

Examples

# consider the following data frame
data <- tibble::tibble(
  x = c(TRUE, FALSE, NA), 
  y = c("x is false", NA, "hello"))
  
# with a single vector if_else2() behaves the same as the default call to if_else().
dplyr::mutate(data,
    y1 = dplyr::if_else(y != "x is false", "x is true", y),
    y2 = if_else2(y != "x is false", "x is true", y))

# however in the case of a second vector the use of 
# if_else2() does not introduce missing values
dplyr::mutate(data,
    x1 = dplyr::if_else(stringr::str_detect(y, "x is false"), FALSE, x),
    x2 = if_else2(stringr::str_detect(y, "x is false"), FALSE, x))
    
# in the case of regular expression matching an alternative is to use 
# str_detect2()
dplyr::mutate(data,
    x3 = dplyr::if_else(str_detect2(y, "x is false"), FALSE, x))

[Package tidyplus version 0.0.2 Index]