make_function: Make a function from its components.

View source: R/make-function.r

make_functionR Documentation

Make a function from its components.


This constructs a new function given it's three components: list of arguments, body code and parent environment.


make_function(args, body, env = parent.frame())



A named list of default arguments. Note that if you want arguments that don't have defaults, you'll need to use the special function alist, e.g. alist(a = , b = 1)


A language object representing the code inside the function. Usually this will be most easily generated with quote


The parent environment of the function, defaults to the calling environment of make_function


f <- function(x) x + 3
g <- make_function(alist(x = ), quote(x + 3))

# The components of the functions are identical
identical(formals(f), formals(g))
identical(body(f), body(g))
identical(environment(f), environment(g))

# But the functions are not identical because f has src code reference
identical(f, g)

attr(f, "srcref") <- NULL
# Now they are:
stopifnot(identical(f, g))

pryr documentation built on Jan. 18, 2023, 1:08 a.m.