批量声明清单的更清洁方法?

时间:2019-04-03 11:25:33

标签: r list

我有一个迭代过程,涉及将修改/使用的数据附加到列表的子列表。声明一堆列表例如testList <- list() x 12,这样我就可以在循环中直接跳到下面的代码:

testList <- list()
otherTestList <- list()
anotherTestList <- list()

for(i in 1:10){
  testList[[i]] <- testData
  otherTestList[[i]] <- otherTestData
  anotherTestList[[i]] <- anotherTestData
}

上面的代码要求在代码的开头声明3个列表,这不是什么大问题,但是我大约有12个列表,因此它们的大量声明使代码非常难看。我想知道是否有解决此问题的方法?我考虑过的东西是使用lapply在一行中创建列表的过程中的某个地方,但这似乎不是一个选择,因为在将它们用作列表之前需要将对象声明为某种类型。 / p>

1 个答案:

答案 0 :(得分:1)

您可以使用assign()。假设您拥有列表的名称,或者要迭代设置它们:

for (i in 1:5){
  assign(paste0("x",i),list())
}

如果您有名字:

listnames = c("testList", "otherTestList","anotherTestList", ...)
    for (i in 1:5){
      assign(listnames[i],list())
    }

这将为您提供5个名为x1x2testListotherTestList ...的变量,每个变量都包含一个空列表。