R: Modify the arguments of a call

lang_modify {rlang} | R Documentation

## Modify the arguments of a call

### Description

Modify the arguments of a call

### Usage

    lang_modify(.lang, ..., .standardise = FALSE)

### Arguments

`.lang` | Can be a call (language object), a formula quoting a call in the right-hand side, or a frame object from which to extract the call expression.
`...` | Named or unnamed expressions (constants, names or calls) used to modify the call. Use `NULL` to remove arguments. Dots are evaluated with explicit splicing.
`.standardise` | If `TRUE`, the call is standardised before hand to match existing unnamed arguments to their argument names. This prevents new named arguments from accidentally replacing original unnamed arguments.

### Value

A quosure if `.lang` is a quosure, a call otherwise.

### See Also

lang

### Examples

    call <- quote(mean(x, na.rm = TRUE))

    # Modify an existing argument
    lang_modify(call, na.rm = FALSE)
    lang_modify(call, x = quote(y))

    # Remove an argument
    lang_modify(call, na.rm = NULL)

    # Add a new argument
    lang_modify(call, trim = 0.1)

    # Add an explicit missing argument
    lang_modify(call, na.rm = quote(expr = ))

    # Supply a list of new arguments with splice()
    newargs <- list(na.rm = NULL, trim = 0.1)
    lang_modify(call, splice(newargs))

    # Supply a call frame to extract the frame expression:
    f <- function(bool = TRUE) {
      lang_modify(call_frame(), splice(list(bool = FALSE)))
    }
    f()

    # You can also modify quosures inplace:
    f <- ~matrix(bar)
    lang_modify(f, quote(foo))

[Package rlang version 0.1.6 Index]