Match and replace elements of patterns in an expression or a list of expressions.
Usage
expr_replace(expr, ..., patterns, replacements,
n = Inf, env = parent.frame())
Arguments
- expr
Input. An expression, expr_list, or
list()
of expressions.- ...
Alternating series of patterns and replacements, each a single expression (though alternatives can be specified with
?
).- patterns
Patterns to look for. An expression, expr_list, or
list()
of expressions.- replacements
Replacements, one for each pattern.
- n
Maximum number of times for each expression to make each replacement; default is
Inf
.- env
Environment for injections in
expr
,pattern
(see expression).
Details
Patterns follow the syntax for expr_match()
.
See also
expr_match()
to find patterns in expressions, and its cousins
expr_count()
, expr_detect()
, expr_extract()
, and expr_locate()
.
Examples
# Example with alternating patterns and replacements
expr_replace({ 1 + 2 }, {1}, {one}, {2}, {two})
#> one + two
# Example with patterns and replacements in a list
expr_replace({ 1 + 2 }, patterns = expr_list({1}, {2}),
replacements = expr_list({one}, {two}))
#> one + two
# Replace with captures
expr_replace({ 1 + 2 }, ~{ .A + .B }, { .A - .B })
#> 1 - 2