R: Defuse an R expression

expr {rlang} | R Documentation

## Defuse an R expression

### Description

`expr()` defuses an R expression with injection support.

It is equivalent to `base::bquote()`.

### Arguments

`expr` | An expression to defuse.

### See Also

- Defusing R expressions for an overview.

- `enquo()` to defuse non-local expressions from function arguments.

- Advanced defusal operators.

- `sym()` and `call2()` for building expressions (symbols and calls respectively) programmatically.

- `base::eval()` and `eval_bare()` for resuming evaluation of a defused expression.

### Examples

    # R normally returns the result of an expression
    1 + 1

    # `expr()` defuses the expression that you have supplied and
    # returns it instead of its value
    expr(1 + 1)

    expr(toupper(letters))

    # It supports _injection_ with `!!` and `!!!`. This is a convenient
    # way of modifying part of an expression by injecting other
    # objects.
    var <- "cyl"
    expr(with(mtcars, mean(!!sym(var))))

    vars <- c("cyl", "am")
    expr(with(mtcars, c(!!!syms(vars))))

    # Compare to the normal way of building expressions
    call("with", call("mean", sym(var)))

    call("with", call2("c", !!!syms(vars)))

[Package rlang version 1.0.2 Index]