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


R do.call 執行函數調用

R語言 do.call 位於 base 包(package)。

說明

do.call 根據名稱或函數以及要傳遞給它的參數列表構造並執行函數調用。

用法

do.call(what, args, quote = FALSE, envir = parent.frame())

參數

what

一個函數或一個非空字符串,命名要調用的函數。

args

函數調用的參數列表。 argsnames 屬性給出參數名稱。

quote

指示是否引用參數的邏輯值。

envir

評估調用的環境。如果 what 是字符串並且參數是符號或帶引號的表達式,這將非常有用。

細節

如果 quote 是默認值 FALSE ,則對參數進行求值(在調用環境中,而不是在 envir 中)。如果 quoteTRUE 則每個參數都會被引用(請參閱 quote ),以便參數求值的效果是刪除引號 - 在構造調用時保留原始參數不求值。

對於使用 do.call 計算的函數,某些函數(例如 substitute )的行為與從解釋器計算的函數不同。精確的語義目前尚未定義並且可能會發生變化。

(評估的)函數調用的結果。

警告

這不應該被用來試圖逃避對 .Internal 和其他非 API 調用的使用限製。

例子

do.call("complex", list(imaginary = 1:3))

## if we already have a list (e.g., a data frame)
## we need c() to add further arguments
tmp <- expand.grid(letters[1:2], 1:3, c("+", "-"))
do.call("paste", c(tmp, sep = ""))

do.call(paste, list(as.name("A"), as.name("B")), quote = TRUE)

## examples of where objects will be found.
A <- 2
f <- function(x) print(x^2)
env <- new.env()
assign("A", 10, envir = env)
assign("f", f, envir = env)
f <- function(x) print(x)
f(A)                                      # 2
do.call("f", list(A))                     # 2
do.call("f", list(A), envir = env)        # 4
do.call( f,  list(A), envir = env)        # 2
do.call("f", list(quote(A)), envir = env) # 100
do.call( f,  list(quote(A)), envir = env) # 10
do.call("f", list(as.name("A")), envir = env) # 100

eval(call("f", A))                      # 2
eval(call("f", quote(A)))               # 2
eval(call("f", A), envir = env)         # 4
eval(call("f", quote(A)), envir = env)  # 100

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

call 創建未評估的調用。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Execute a Function Call。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。