| nif {kit} | R Documentation |
Nested if else
Description
nif is a fast implementation of SQL CASE WHEN statement for R. Conceptually, nif is a nested version of iif (with smarter implementation than manual nesting). It is not the same but it is comparable to dplyr::case_when and data.table::fcase.
Usage
nif(..., default=NULL)
Arguments
... |
A sequence consisting of logical condition ( |
default |
Default return value, |
Details
Unlike data.table::fcase, the default argument is set to NULL. In addition, nif can be called by other packages at C level. Note that at C level, the function has an additional argument SEXP md which is either TRUE for lazy evaluation or FALSE for non lazy evaluation. This argument is not exposed to R users and is more for C users.
Value
Vector with the same length as the logical conditions (when) in ..., filled with the corresponding values (value) from ..., or eventually default. Attributes of output values value1, value2, ...valueN in ... are preserved.
Author(s)
Morgan Jacob
See Also
Examples
x = 1:10
nif(
x < 5L, 1L,
x > 5L, 3L
)
nif(
x < 5L, 1L:10L,
x > 5L, 3L:12L
)
# Lazy evaluation example
nif(
x < 5L, 1L,
x >= 5L, 3L,
x == 5L, stop("provided value is an unexpected one!")
)
# nif preserves attributes, example with dates
nif(
x < 5L, as.Date("2019-10-11"),
x > 5L, as.Date("2019-10-14")
)
# nif example with factor; note the matching levels
nif(
x < 5L, factor("a", levels=letters[1:3]),
x > 5L, factor("b", levels=letters[1:3])
)
# Example of using the 'default' argument
nif(
x < 5L, 1L,
x > 5L, 3L,
default = 5L
)
nif(
x < 5L, 1L,
x > 5L, 3L,
default = rep(5L, 10L)
)