Switch-style recoding of values with string pattern matching
grep_case(x, ..., preserve = FALSE, default = NA)
A vector
<dynamic-dots
> A sequence of two-sided
formulas or named arguments.
Formulas: Elements of x
that match the regex pattern on the
left hand side (LHS) of formulas will be replaced with the value in the
right hand side (RHS).
The LHS must evaluate to a character string.
The RHS must be of length one.
NULL
inputs are ignored.
Named arguments: named arguments are passed to grepl()
.
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 vector of the same length as x
.
grep_case_fct()
to return a factor and
grep_case_list()
to return a list
fn_case()
, to apply a function other than grepl()
to each case
switch_case()
to recode values with exact matching
in_case()
, a pipeable alternative to dplyr::case_when()
words <- c("caterpillar", "dogwood", "catastrophe", "dogma")
grep_case(
words,
"cat" ~ "feline",
"dog" ~ "canine"
)
#> [1] "feline" "canine" "feline" "canine"
caps_words <- c("caterpillar", "dogwood", "Catastrophe", "DOGMA")
grep_case(
caps_words,
"cat" ~ "feline",
"dog" ~ "canine",
ignore.case = TRUE
)
#> [1] "feline" "canine" "feline" "canine"
countries <- c(
"France", "Ostdeutschland", "Westdeutschland", "Nederland",
"Belgie (Vlaanderen)", "Belgique (Wallonie)", "Luxembourg", "Italia"
)
grep_case(
countries,
"Deutschland" ~ "Germany",
"Belgi(qu)?e" ~ "Belgium",
"Nederland" ~ "Netherlands",
"Italia" ~ "Italy",
preserve = TRUE,
ignore.case = TRUE
)
#> [1] "France" "Germany" "Germany" "Netherlands" "Belgium"
#> [6] "Belgium" "Luxembourg" "Italy"