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)
)