R: Transform to a closure

as_closure {rlang} | R Documentation

## Transform to a closure

### Description

`as_closure()` is like `as_function()` but also wraps primitive functions inside closures. Some special control flow primitives like `if`, `for`, or `break` can't be wrapped and will cause an error.

### Usage

    as_closure(x, env = caller_env())

### Arguments

`x` | A function or formula. If a function, it is used as is. If a formula, e.g. `~ .x + 2`, it is converted to a function with up to two arguments: `.x` (single argument) or `.x` and `.y` (two arguments). The `.` placeholder can be used instead of `.x`. This allows you to create very compact anonymous functions (lambdas) with up to two inputs. Functions created from formulas have a special class. Use `is_lambda()` to test for it. If a string, the function is looked up in `env`. Note that this interface is strictly for user convenience because of the scoping issues involved. Package developers should avoid supplying functions by name and instead supply them by value.
`env` | Environment in which to fetch the function in case `x` is a string.

### Examples

    # Primitive functions are regularised as closures
    as_closure(list)
    as_closure("list")

    # Operators have `.x` and `.y` as arguments, just like lambda
    # functions created with the formula syntax:
    as_closure(`+`)
    as_closure(`~`)

[Package rlang version 1.0.2 Index]