2013-04-11 68 views
3

是否有某种方式可以访问replicate函数中的当前复制号,以便我可以将它用作重复评估中的变量?例如,在这个简单的例子中,我想使用当前的复制号码来生成当前复制号码的可变长度向量列表。例如,下面x将代表当前复制:有没有办法访问replicate()中的迭代号?

replicate(3 , rep(x , sample.int(5,1))) 

我知道这个简单的例子很容易与lapply

lapply(1:3 , function(x) rep(x , sample.int(5,1))) 

做,但你可以访问replicate复制计数器?

+3

'replicate'只是调用'sapply',然后运行'lapply'。这是一个方便的功能。所以我的猜测是这不是为了那个。 – Arun 2013-04-11 11:03:39

+4

...我认为你最好的办法就是像你(1)一样在'1:n'上应用'(l | s)'。我不确定为什么会有问题。 – thelatemail 2013-04-11 11:05:13

+2

...或者只写一个'for'循环。没有时间惩罚,并且您可能更容易操作索引变量。 – 2013-04-11 11:31:48

回答

2

不,至少不是以支持的,用户友好的方式。正如阿伦所说:

> replicate 
function (n, expr, simplify = "array") 
sapply(integer(n), eval.parent(substitute(function(...) expr)), 
    simplify = simplify) 
... 

> sapply 
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) 
{ 
    FUN <- match.fun(FUN) 
    answer <- lapply(X = X, FUN = FUN, ...) 
    ... 

现在,这是sapply看到什么,如果你通过3

> integer(3) 
[1] 0 0 0 

你为什么不写自己的replicate版本的快捷方式使用?

+0

谢谢。我可能会把你带到那,或者坚持'lapply'! – 2013-04-11 14:06:43

+0

有没有人这样做?更新? – 2017-01-22 23:17:58