R: Create a function

new_function {rlang} | R Documentation

## Create a function

### Description

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

### Usage

    new_function(args, body, env = caller_env())

### 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 `base::quote()`
`env` | The parent environment of the function, defaults to the calling environment of `new_function()`

### Examples

    f <- function(x) x + 3
    g <- new_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))

[Package rlang version 0.3.2 Index]