5

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

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

我还有一些清单:

L <- list()

我希望L[[1]], L[[2]], L[[3]],..., L[[100]],...,L[[1000]]都将对象X放入其中。也就是说,如果我在控制台中输入L[[i]],它会返回X,我在 {1,2,...,1000} 中。

我如何在不依赖for loopor的情况下有效地做到这一点lapply

4

2 回答 2

5

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

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

编辑对 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会在每次迭代时评估表达式。

于 2013-07-21T10:41:23.360 回答
5

列出 1 并复制它。

L <- rep(list(x), 1000)
于 2013-07-21T10:41:23.887 回答