rlang (version 0.2.1)

as_function: Convert to function or closure

Description

  • as_function() transform objects to functions. It fetches functions by name if supplied a string or transforms quosures to a proper 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())

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.

env

Environment in which to fetch the function in case x is a string.

Examples

Run this code
# NOT RUN {
f <- as_function(~ . + 1)
f(10)

# 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(`~`)
# }

Run the code above in your browser using DataCamp Workspace