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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。