These functions are equivalent to in_case()
, switch_case()
,
grep_case()
, fn_case()
, and fn_switch_case()
but return
factors with their levels determined by the order of their
case statements.
in_case_fct(..., preserve = FALSE, default = NA, ordered = FALSE)
switch_case_fct(x, ..., preserve = FALSE, default = NA, ordered = FALSE)
grep_case_fct(x, ..., preserve = FALSE, default = NA, ordered = FALSE)
fn_case_fct(x, fn, ..., preserve = FALSE, default = NA, ordered = FALSE)
fn_switch_case_fct(x, fn, ..., preserve = FALSE, default = NA, ordered = FALSE)
<dynamic-dots
> A sequence of two-sided
formulas or named arguments.
Formulas: Elements of x
that return TRUE
when passed to fn
with
the left hand side (LHS) of each formula will be replaced with the value in
the right hand side (RHS).
The LHS must evaluate to a logical vector when passed to fn
with x
.
The RHS must be of length 1 or the same length as all other RHS.
Named arguments: named arguments are passed as additional arguments
to the function fn
.
If TRUE
, unmatched elements of x
will be returned
unmodified.
(The elements may have their type coerced to be compatible with
replacement values.)
If FALSE
, unmatched elements of x
will be replaced with default
.
Defaults to FALSE
.
If preserve
is FALSE
, a value to replace unmatched
elements of x
.
Defaults to NA
.
A logical.
If TRUE
, returns an ordered factor.
If FALSE
, returns an unordered factor.
A vector
A function to apply to the left-hand side of each formula in ...
Either a quoted or unquoted function name, an anonymous function
, or
a purrr-style formula.
The function should take two inputs, the first being x
and the second
being the left-hand side of the formula.
The function should return a logical vector, either of length 1 or the same
length as x
.
A factor vector of length 1 or n, matching the length of the logical
input or output vectors.
Levels are determined by the order of inputs to ...
.
Inconsistent lengths will generate an error.
in_case()
, switch_case()
, grep_case()
, fn_case()
, and
fn_case_fct()
on which these functions are based.
1:10 %>%
in_case_fct(
. %% 2 == 0 ~ "even",
. %% 2 == 1 ~ "odd"
)
#> [1] odd even odd even odd even odd even odd even
#> Levels: even odd
switch_case_fct(
c("a", "b", "c"),
"c" ~ "cantaloupe",
"b" ~ "banana",
"a" ~ "apple"
)
#> [1] apple banana cantaloupe
#> Levels: cantaloupe banana apple
switch_case_fct(
c("a", "b", "c", "d"),
"c" ~ "cantaloupe",
"b" ~ "banana",
"a" ~ "apple"
)
#> [1] apple banana cantaloupe <NA>
#> Levels: cantaloupe banana apple
switch_case_fct(
c("a", "b", "c", "d"),
"c" ~ "cantaloupe",
"b" ~ "banana",
"a" ~ "apple",
preserve = TRUE
)
#> [1] apple banana cantaloupe d
#> Levels: cantaloupe banana apple d
grep_case_fct(
c("caterpillar", "dogwood", "catastrophe", "dogma"),
"cat" ~ "feline",
"dog" ~ "canine"
)
#> [1] feline canine feline canine
#> Levels: feline canine
fn_case_fct(
c("a", "b", "c"),
`%in%`,
"c" ~ "cantaloupe",
"b" ~ "banana",
"a" ~ "apple"
)
#> [1] apple banana cantaloupe
#> Levels: cantaloupe banana apple