R語言
do.call
位於 base
包(package)。 說明
do.call
根據名稱或函數以及要傳遞給它的參數列表構造並執行函數調用。
用法
do.call(what, args, quote = FALSE, envir = parent.frame())
參數
what |
一個函數或一個非空字符串,命名要調用的函數。 |
args |
函數調用的參數列表。 |
quote |
指示是否引用參數的邏輯值。 |
envir |
評估調用的環境。如果 |
細節
如果 quote
是默認值 FALSE
,則對參數進行求值(在調用環境中,而不是在 envir
中)。如果 quote
是 TRUE
則每個參數都會被引用(請參閱 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 dots ...、..1 等在函數中使用
- R dontCheck 抑製檢查的身份函數
- R double 雙精度向量
- R dump R 對象的文本表示
- R diag 矩陣對角線
- R deparse 表達式解析
- R deparseOpts 表達式解析選項
- R debug 調試函數
- R dcf 以 DCF 格式讀寫數據
- R data.class 對象類
- R dimnames 對象的暗名稱
- R dyn.load 對外函數接口
- R diff 滯後差異
- R dput 將對象寫入文件或重新創建它
- R duplicated 確定重複元素
- R dim 物體的尺寸
- R drop 刪除冗餘盤區信息
- R delayedAssign 延遲評估和承諾
- R difftime 時間間隔/差異
- R det 計算矩陣的行列式
- R detach 從搜索路徑中分離對象
- R data.frame DataFrame
- R data.matrix 將 DataFrame 轉換為數字矩陣
- R date 係統日期和時間
- R droplevels 刪除因子中未使用的級別
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Execute a Function Call。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。