2013-04-11 67 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