下面我将展示我的可重复示例。现在,当我在许多不同的来源(比如50件事)上做一堆回归类型工作时,我将每个列表汇总在一个列表中,然后将这些列表组合在一起以便于存储。每个列表的结构都相同,它只包含不同的数据。聚合特定部分的最佳方法是什么?在这个例子中,最快的方法是组合ds1,ds2,ds3和amp; ds4,嵌入到不同的列表中?
set.seed(50)
df1 <- data.frame(x=runif(10),y=runif(10))
set.seed(50)
df2 <- data.frame(x=runif(10),y=runif(10))
set.seed(50)
df3 <- data.frame(x=runif(10),y=runif(10))
set.seed(50)
df4 <- data.frame(x=runif(10),y=runif(10))
rs1 <- rep(0.05,5)
rs2 <- rep(0.03,5)
rs3 <- rep(0.06,5)
rs4 <- rep(0.09,5)
ds1 <- rep(0.04,5)
ds2 <- rep(0.04,5)
ds3 <- rep(0.04,5)
ds4 <- rep(0.04,5)
rsdsList1 <- list(rs1,ds1)
rsdsList2 <- list(rs2,ds2)
rsdsList3 <- list(rs3,ds3)
rsdsList4 <- list(rs4,ds4)
mg1 <- list(df1,rsdsList1)
mg2 <- list(df2,rsdsList2)
mg3 <- list(df3,rsdsList3)
mg4 <- list(df4,rsdsList4)
答案 0 :(得分:2)
您可以使用以下命令将多个列表的第n个元素收集到单个列表中:
lapply(list(mg1, mg2, mg3, mg4), '[[', n)
因此,在您的情况下,lapply(list(mg1, mg2, mg3, mg4), '[[', 1)
将创建您所追踪的列表。
您可以使用lapply
命名要迭代的列表元素,以将这些名称转移到输出列表的元素,例如
lapply(list(mg1=mg1, mg2=mg2, mg3=mg3, mg4=mg4), '[[', 1)
或将lapply
包裹在setNames
中:
setNames(lapply(list(mg1, mg2, mg3, mg4), '[[', 1), paste0('mg', 1:4))