当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R body 访问和操作函数体


R语言 body 位于 base 包(package)。

说明

获取或设置函数的主体,它本质上是函数定义的全部内容,但其形式参数(formals),请参阅“详细信息”。

用法

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

参数

fun

函数对象,或参见“详细信息”。

envir

定义函数的环境。

value

一个对象,通常是language object:请参阅“值”部分。

细节

对于第一种形式,fun可以是命名要操作的函数的字符串,从父框架中查找。如果未指定,则使用调用body的函数。

除了最简单的之外,所有函数的主体都是大括号表达式,即对 { 的调用:有关如何创建此类调用的信息,请参阅“示例”部分。

body 返回指定函数的主体。这通常是 language object ,最常见的是对 { 的调用,但它也可以是 symbol 例如 pi 或作为返回值的常量(例如 3"R" )的函数。

替换形式将函数的主体设置为右侧的对象,并(可能)重置函数的 environment ,并删除 attributes 。如果 value 属于 "expression" 类,则第一个元素用作主体:任何其他元素都将被忽略,并带有警告。

例子

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) })))

也可以看看

(非原始)函数的三个部分是 formalsbodyenvironment

此外,请参见alistargsfunction

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Access to and Manipulation of the Body of a Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。