ifelse returns a value with the same shape as
test which is filled with elements selected from either
no depending on whether the element of
ifelse(test, yes, no)
- an object which can be coerced to logical mode.
- return values for true elements of
- return values for false elements of
no are too short, their elements are recycled.
yes will be evaluated if and only if any element of
test is true, and analogously for
Missing values in
test give missing values in the result.
A vector of the same length and attributes (including dimensions and
test and data values from the values of
no. The mode of the answer will be coerced from logical to accommodate first any values taken from
yes and then any values taken from
The mode of the result may depend on the value of
test (see the examples), and the class attribute (see
oldClass) of the result is taken from
test and may be inappropriate for the values selected from
Sometimes it is better to use a construction such as
(tmp <- yes; tmp[!test] <- no[!test]; tmp)
, possibly extended to handle missing values in
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
x <- c(6:-4) sqrt(x) #- gives warning sqrt(ifelse(x >= 0, x, NA)) # no warning ## Note: the following also gives the warning ! ifelse(x >= 0, sqrt(x), NA) ## example of different return modes: yes <- 1:3 no <- pi^(0:3) typeof(ifelse(NA, yes, no)) # logical typeof(ifelse(TRUE, yes, no)) # integer typeof(ifelse(FALSE, yes, no)) # double
Documentation reproduced from R 3.0.2. License: GPL-2.