R: Modify the arguments of a call

call_modify {rlang} | R Documentation

## Modify the arguments of a call

### Description

Modify the arguments of a call

### Usage

    call_modify(.call, ..., .standardise = FALSE, .env = caller_env())

### Arguments

`.call` | Can be a call, 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. These dots support tidy dots features.
`.standardise` | If `TRUE`, the call is standardised beforehand to match existing unnamed arguments to their argument names. This prevents new named arguments from accidentally replacing original unnamed arguments.
`.env` | The environment where to find the `call` definition in case `call` is not wrapped in a quosure. This is passed to `call_standardise()` if `.standardise` is `TRUE`.

### Value

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

### Life cycle

In rlang 0.2.0, `lang_modify()` was soft-deprecated and renamed to `call_modify()`. See lifecycle section in `call2()` for more about this change.

### See Also

lang

### Examples

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

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

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

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

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

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

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

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

[Package rlang version 0.2.2 Index]