Create a function by "hand"
function_new.RdThis constructs a new function given it's three components: list of arguments, body code and parent environment.
Usage
function_new(args, body, env = parent.frame())Arguments
- args
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)- body
A language object representing the code inside the function. Usually this will be most easily generated with
quote- env
The parent environment of the function, defaults to the calling environment of
make_function
Examples
f <- function(x) x + 3
g <- function_new(alist(x = ), quote(x + 3))
# The components of the functions are identical
identical(formals(f), formals(g))
#> [1] TRUE
identical(body(f), body(g))
#> [1] TRUE
identical(environment(f), environment(g))
#> [1] TRUE
# But the functions are not identical because f has src code reference
identical(f, g)
#> [1] TRUE
attr(f, "srcref") <- NULL
# Now they are:
stopifnot(identical(f, g))