使用For循环简化列表 库(xml2) 图书馆(rvest) datpackage

使用For循环简化列表 库(xml2) 图书馆(rvest) datpackage,r,list,for-loop,R,List,For Loop,如果对象已经创建,我们可以使用粘贴和mget datlist2 <- for (i in 1:10) { list(paste0("dat",i)) } datlist3 <- list(datpackage) datlist对于创建带有随机数的列表,我还建议: datlist <- replicate(10, runif(2), simplify = FALSE) 结果 datlist@akrun使用的replicate代码更具可读性,这

如果对象已经创建,我们可以使用
粘贴
mget

datlist2 <- for (i in 1:10) {
                list(paste0("dat",i))
}

datlist3 <- list(datpackage)

datlist对于创建带有随机数的列表,我还建议:

datlist <- replicate(10, runif(2), simplify = FALSE)
结果
datlist@akrun使用的
replicate
代码更具可读性,这通常是一件好事。如果这是一个简化的示例,并且您需要为10个“事情”中的每一个做更多的事情,那么使用
lappy
将更合适。(由于
replicate
只是简单地调用
sapply
,因此它具有类似的性能。它的使用主要与个人偏好有关。)
datlist2 <- for (i in 1:10) {
                list(paste0("dat",i))
}

datlist3 <- list(datpackage)
datlist <- mget(paste0("dat", 1:10))
datlist <- replicate(10, runif(2), simplify = FALSE)
datlist2 <- lapply(vector("list", 10), function(x) {runif(2)})
funA <- function(x) {replicate(10, runif(2), simplify = FALSE)}
funB <- function(x) {lapply(vector("list", 10), function(x) {runif(2)})}
microbenchmark::microbenchmark(funA(), funB(), times = 1e4)
Unit: microseconds
   expr    min      lq     mean  median      uq      max neval cld
 funA() 24.053 27.3305 37.98530 28.6665 34.4045 2478.510 10000   b
 funB() 19.507 21.6400 30.37437 22.9235 27.0500 2547.145 10000  a