Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在复制表达式中使用dots参数失败-确切地说是为什么?_R_Function_Evaluation - Fatal编程技术网

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)