R: Convert to function or closure

as_function {rlang} | R Documentation

## Convert to function or closure

### Description

- `as_function()` transform objects to functions. It fetches functions by name if supplied a string or transforms formulas to function.

- `as_closure()` first passes its argument to `as_function()`. If the result is a primitive function, it regularises it to a proper closure (see `is_function()` about primitive functions).

### Usage

    as_function(x, env = caller_env())

    is_lambda(x)

    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 two arguments, `.x` or `.` and `.y`. This allows you to create very compact anonymous functions with up to two inputs. Functions created from formulas have a special class. Use `is_lambda()` to test for it.
`env` | Environment in which to fetch the function in case `x` is a string.

### Examples

    f <- as_function(~ . + 1)
    f(10)

    # Functions created from a formula have a special class:
    is_lambda(f)
    is_lambda(as_function(function() "foo"))

    # 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 0.3.2 Index]