假设我有一些对象(任何对象),例如:
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 loop
or的情况下有效地做到这一点lapply
?
假设我有一些对象(任何对象),例如:
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 loop
or的情况下有效地做到这一点lapply
?
使用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
会在每次迭代时评估表达式。
列出 1 并复制它。
L <- rep(list(x), 1000)