| fifelse {data.table} | R Documentation |
Fast ifelse
Description
fifelse is a faster and more robust replacement of ifelse. It is comparable to dplyr::if_else and hutils::if_else. It returns a value with the same length as test filled with corresponding values from yes, no or eventually na, depending on test. Supports bit64's integer64 and nanotime classes.
Usage
fifelse(test, yes, no, na=NA)
Arguments
test |
A logical vector. |
yes, no |
Values to return depending on |
na |
Value to return if an element of |
Details
In contrast to ifelse attributes are copied from the first non-NA argument to the output. This is useful when returning Date, factor or other classes.
Value
A vector of the same length as test and attributes as yes. Data values are taken from the values of yes and no, eventually na.
See Also
Examples
x = c(1:4, 3:2, 1:4)
fifelse(x > 2L, x, x - 1L)
# unlike ifelse, fifelse preserves attributes, taken from the 'yes' argument
dates = as.Date(c("2011-01-01","2011-01-02","2011-01-03","2011-01-04","2011-01-05"))
ifelse(dates == "2011-01-01", dates - 1, dates)
fifelse(dates == "2011-01-01", dates - 1, dates)
yes = factor(c("a","b","c"))
no = yes[1L]
ifelse(c(TRUE,FALSE,TRUE), yes, no)
fifelse(c(TRUE,FALSE,TRUE), yes, no)
# Example of using the 'na' argument
fifelse(test = c(-5L:5L < 0L, NA), yes = 1L, no = 0L, na = 2L)