R: Access to and Manipulation of the Body of a Function

body {base} | R Documentation

## Access to and Manipulation of the Body of a Function

### Description

Get or set the body of a function.

### Usage

    body(fun = sys.function(sys.parent()))
    body(fun, envir = environment(fun)) <- value

### Arguments

`fun` | a function object, or see ‘Details’.
`envir` | environment in which the function should be defined.
`value` | an object, usually a language object: see section ‘Value’.

### Details

For the first form, `fun` can be a character string naming the function to be manipulated, which is searched for from the parent frame. If it is not specified, the function calling `body` is used.

The bodies of all but the simplest are braced expressions, that is calls to `{`: see the ‘Examples’ section for how to create such a call.

### Value

`body` returns the body of the function specified. This is normally a language object, most often a call to `{`, but it can also be an object (e.g., `pi`) to be the return value of the function.

The replacement form sets the body of a function to the object on the right hand side, and (potentially) resets the environment of the function. If `value` is of class `"expression"` the first element is used as the body: any additional elements are ignored, with a warning.

### See Also

`alist`, `args`, `function`.

### Examples

    body(body)
    f <- function(x) x^5
    body(f) <- quote(5^x)
    ## or equivalently  body(f) <- expression(5^x)
    f(3) # = 125
    body(f)

    ## creating a multi-expression body
    e <- expression(y <- x^2, return(y)) # or a list
    body(f) <- as.call(c(as.name("{"), e))
    f
    f(8)

    ## Using substitute() may be simpler than 'as.call(c(as.name("{",..)))':
    stopifnot(identical(body(f), substitute({ y <- x^2; return(y) })))

[Package base version 3.5.1 Index]