|
本帖最后由 genechip 于 2011-3-8 17:15 编辑
函数 call 允许通过函数名字和参数列表创建一个调用对象
x <- 10.5 > call("round", x) round(10.5)
如上所见, 是x的值而不是符号 加入了调用中,因此和 round(x)有明显的差异。这种形式用的非常地少,但是当一个函数的名字可以作为一个字符变量时,这会非常有用。
函数 do.call 是相关的,但会立即对调用求值和从含有所有参数的模式为"list"的对象里面获取参数。一个很自然的应用是当我们向把一个函数(如cbind)用于一个列表或数据框的所有对象时。
is.na.data.frame <- function (x) {
y <- do.call("cbind", lapply(x, "is.na"))
rownames(y) <- row.names(x)
y }
其它一些应用包括基于 do.call("f", list(...)) 构造的变种。但是,我们必须知道这包括实际参数调用前的参数求值。这可能阻止函数自身的悠闲求值和参数替换方面。一个类似的注意同样适用于call函数。
|
|