有效地填充具有相同对象的列表

Jas*_*ase 5 memory-management r list

假设我有一些对象(任何对象),例如:

X <- array(NA,dim=c(2,2))
Run Code Online (Sandbox Code Playgroud)

我也有一些清单:

L <- list()
Run Code Online (Sandbox Code Playgroud)

我想L[[1]],L[[2]],L[[3]],... L[[100]],...,L[[1000]]所有有物体X里面.也就是说,如果我输入控制台L[[i]],它将返回X,我在{1,2,...,1000}.

如何在不依赖于for looplapply?的情况下有效地做到这一点?

ags*_*udy 5

使用replicate即使它仍然是一种循环解决方案:

L <- replicate(1000,X,simplify=FALSE)
Run Code Online (Sandbox Code Playgroud)

编辑 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
Run Code Online (Sandbox Code Playgroud)

rep比你快5倍.我想因为replicate将在每次迭代时评估表达式.


Hon*_*Ooi 5

列出1并复制它.

L <- rep(list(x), 1000)
Run Code Online (Sandbox Code Playgroud)