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


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