if_else: Vectorised if

Description Usage Arguments Value Examples

View source: R/if_else.R

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

1
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

1
2
3
4
5
6
7
8
9
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,

Example output

Attaching package: 'dplyr'

The following objects are masked from 'package:stats':

    filter, lag

The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union

 [1] NA NA NA NA NA  0  1  2  3  4  5 NA
 [1] "negative" "negative" "negative" "negative" "negative" "positive"
 [7] "positive" "positive" "positive" "positive" "positive" "missing" 
 [1] NA NA  1 NA  2 NA NA NA NA NA
 [1] <NA> <NA> a    <NA> c    <NA> <NA> <NA> <NA> <NA>
Levels: a c d e

dplyr documentation built on June 19, 2021, 1:07 a.m.