如何通过列表的列表循环和子集

How to loop and subset through a list of list

我有一个列表,其中每个元素都是一个列表。我想为每个元素(训练集)和 return 创建一个新列表。

例如,sim = [list1, list2, list3]

我可以不用循环就这样做,但是你会如何优化它?

trainID =sample(1:1000,700)
train1 <- sim[[1]][trainID,] #first list 
train2 <- sim[[2]][trainID,]
train3 <- sim[[3]][trainID,]
bigtrain <- list(train1, train2, train3)

这个有用吗?

bigtrain = list()
for(i in 1:3){
  bigtrain[[i]] <- sim[[i]][trainID,]
}

使用lapply

bigtrain <- lapply(sim, function(x) x[trainID, ])

我们可以使用tidyverse

library(dplyr)
library(purrr)
bigtrain <- map(sim, ~ .x %>% 
                          slice(trainID))