當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。