modify_lang: Recursively modify a language object

View source: R/modify-lang.r

modify_langR Documentation

Recursively modify a language object

Description

Recursively modify a language object

Usage

modify_lang(x, f, ...)

Arguments

x

object to modify: should be a call, expression, function or list of the above.

f

function to apply to leaves

...

other arguments passed to f

Examples

a_to_b <- function(x) {
  if (is.name(x) && identical(x, quote(a))) return(quote(b))
  x
}
examples <- list(
  quote(a <- 5),
  alist(a = 1, c = a),
  function(a = 1) a * 10,
  expression(a <- 1, a, f(a), f(a = a))
)
modify_lang(examples, a_to_b)
# Modifies all objects called a, but doesn't modify arguments named a

pryr documentation built on Jan. 18, 2023, 1:08 a.m.