Last chance! 50% off unlimited learning
Sale ends in
as_function()
transforms a one-sided formula into a function.
This powers the lambda syntax in packages like purrr.
as_function(
x,
env = global_env(),
...,
arg = caller_arg(x),
call = caller_env()
)is_lambda(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.
Environment in which to fetch the function in case x
is a string.
These dots are for future extensions and must be empty.
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
The execution environment of a currently
running function, e.g. caller_env()
. The function will be
mentioned in error messages as the source of the error. See the
call
argument of abort()
for more information.
f <- as_function(~ .x + 1)
f(10)
g <- as_function(~ -1 * .)
g(4)
h <- as_function(~ .x - .y)
h(6, 3)
# Functions created from a formula have a special class:
is_lambda(f)
is_lambda(as_function(function() "foo"))
Run the code above in your browser using DataLab