【发布时间】:2016-07-11 19:17:20
【问题描述】:
我想在 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
在评估replicate 中的expr 参数期间,这里的机制到底是什么。谁能解释一下这种行为?
【问题讨论】:
-
你是对的。谢谢!对我来说:RTM,RTM :/
-
非标准评价的乐趣。在这个具体例子中直接使用
sapply即可。
标签: r function evaluation