if_else {dplyr} | R Documentation

## Vectorised if

### Description

Compared to the base `ifelse()`, this function is more strict. It checks that `true` and `false` are the same type. This strictness makes the output type more predictable, and makes it somewhat faster.

### Usage

    if_else(condition, true, false, missing = NULL)

### 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`.
`missing` | If not `NULL`, will be used to replace missing values.

### Value

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

### Examples

    x <- c(-5:5, NA)
    if_else(x < 0, NA_integer_, x)
    if_else(x < 0, "negative", "positive", "missing")

    # Unlike ifelse, if_else preserves types
    x <- factor(sample(letters[1:5], 10, replace = TRUE))
    ifelse(x %in% c("a", "b", "c"), x, factor(NA))
    if_else(x %in% c("a", "b", "c"), x, factor(NA))
    # Attributes are taken from the `true` vector,

[Package dplyr version 0.7.0 Index]