# ifelse function in R only returns the first element

September 16, 2011
By

(This article was first published on One Tip Per Day, and kindly contributed to R-bloggers)

If you also favor to use the function, be aware of the returned value. For example:

> ifelse(1>0, 3, 4) [1] 3> ifelse(1>0, c(2, 3), c(4, 5))   # only the first element returned.[1] 2 > ifelse(c(1:10)>5, 'on', 'off') [1] "off" "off" "off" "off" "off" "on"  "on"  "on"  "on"  "on"

Here is another nice example (from http://rwiki.sciviews.org/doku.php?id=tips:programming:ifelse)

> varD <- log(0:9)  # A vector like this one that contains -Inf could be troublesome in subsequent manipulations> varD [1]      -Inf 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 1.7917595 [8] 1.9459101 2.0794415 2.1972246> varD <- ifelse(is.finite(varD), varD, NA)   # Remove the -Inf, replace with NA> varD [1]        NA 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 1.7917595 [8] 1.9459101 2.0794415 2.1972246