2013-07-21 3 views
5

한다고 가정 내가 예를 들어, 일부 개체 (개체)가 : 목록 채우기 효율적으로

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

이 또한 내가 몇 가지 목록이 있습니다

L <- list() 
내가 L[[1]] 원하는

, L[[2]], L[[3]]을, ... L[[100]], ..., L[[1000]] 모두 안에 X 개체가 있어야합니다. 즉, 콘솔 L[[i]]에 입력하면 X을 반환합니다. 여기서 i는 {1,2, ..., 1000}입니다.

for loop 또는 lapply에 의존하지 않고 어떻게 효율적으로 수행합니까?

답변

5

1의 목록을 만들고 그것을 복제하십시오.

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

replicate를 사용하여도 여전히 루프 솔루션의 일종 경우 :

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

편집 benchmarkking 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 배 빠르다. 나는 replicate이 각 반복에서 표현을 평가할 것이기 때문에 나는 추측한다.