我想在...
的表达式中使用点参数(replicate
)。我注意到他们没有这样做的效果:
foo <- function(k=1, n=10, ...)
{
replicate(k, rnorm(n, ...))
}
foo(2, mean=100)
结果的平均值不是100。
[,1] [,2]
[1,] 0.2859647 -0.1046510
[2,] -0.7867414 0.5347617
然而,使用包装器将起作用。
foo2 <- function(k=1, n=10, ...)
{
f <- function() rnorm(n, ...)
replicate(k, f())
}
foo2(2, mean=100)
现在,结果的平均值为100。
[,1] [,2]
[1,] 100.9644 100.6287
[2,] 100.0804 101.0218
在评估expr
中的replicate
参数时,这里的机制到底是什么?任何人都可以解释一下这种行为吗?
答案 0 :(得分:1)
记录了此行为:
如果expr是函数调用,请注意关于它的位置的假设 评估,尤其是......可能会引用什么。你可以通过 函数调用的附加命名参数作为附加命名 复制的参数:参见'示例'。
在&#34;例子&#34;部分:
## use of replicate() with parameters:
foo <- function(x = 1, y = 2) c(x, y)
# does not work: bar <- function(n, ...) replicate(n, foo(...))
bar <- function(n, x) replicate(n, foo(x = x))
bar(5, x = 3)