2013-07-21 15 views
5

Załóżmy, że mam jakiś obiekt (dowolnego obiektu), na przykład:lista Populate z samego obiektu skutecznie

X <- array(NA,dim=c(2,2)) 

Również mam pewne listę:

L <- list() 

Chcę L[[1]], L[[2]], L[[3]], ..., L[[100]], ..., L[[1000]] wszystko, aby obiekt X w środku. Oznacza to, że jeśli wpiszesz do konsoli L[[i]], zwróci ona X, gdzie i jest w {1,2, ..., 1000}.

Jak zrobić to skutecznie, nie polegając na for loop lub lapply?

Odpowiedz

5

Utwórz listę 1 i powtórz ją.

L <- rep(list(x), 1000) 
5

Stosując replicate nawet jeżeli nadal rodzaj roztworu pętli:

L <- replicate(1000,X,simplify=FALSE) 

EDIT benchmarkking rozwiązania 2:

X <- array(NA,dim=c(2,2)) 
library(microbenchmark) 
microbenchmark(rep(list(X), 10000), 
       replicate(10000,X,simplify=FALSE)) 

           expr  min  lq median  uq  max neval 
        rep(list(X), 10000) 1.743070 2.114173 3.088678 5.178768 25.62722 100 
replicate(10000, X, simplify = FALSE) 5.977105 7.573593 10.557783 13.647407 80.69774 100 

rep 5 razy szybciej. Myślę, że od replicate oceni wyrażenie w każdej iteracji.

Powiązane problemy