R 在复制表达式中使用dots参数失败-确切地说是为什么?
我想在R 在复制表达式中使用dots参数失败-确切地说是为什么?,r,function,evaluation,R,Function,Evaluation,我想在replicate中的表达式中使用dots参数(…)。我注意到这样做没有效果: foo <- function(k=1, n=10, ...) { replicate(k, rnorm(n, ...)) } foo(2, mean=100) 不过,使用包装器也可以 foo2 <- function(k=1, n=10, ...) { f <- function() rnorm(n, ...) replicate(k, f()) } foo2(2,
replicate
中的表达式中使用dots参数(…
)。我注意到这样做没有效果:
foo <- function(k=1, n=10, ...)
{
replicate(k, rnorm(n, ...))
}
foo(2, mean=100)
不过,使用包装器也可以
foo2 <- function(k=1, n=10, ...)
{
f <- function() rnorm(n, ...)
replicate(k, f())
}
foo2(2, mean=100)
在对
replicate
中的expr
参数求值期间,这里到底发生了什么机制。有人能解释一下这种行为吗?记录了这种行为:
如果expr是一个函数调用,请注意有关其位置的假设
评估,特别是什么。。。可以参考。你可以通过
函数调用的附加命名参数作为附加命名参数
要复制的参数:请参阅“示例”
在“示例”部分:
## 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)
##使用带参数的replicate():
福,你说得对。谢谢对我来说:RTM,RTM:/非标准评估的乐趣。在这个具体的例子中直接使用sapply
。
[,1] [,2]
[1,] 100.9644 100.6287
[2,] 100.0804 101.0218
## 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)