迭代地创建列表列表

时间:2013-08-30 13:48:30

标签: r

我有一个循环,每次创建三个对象重复100次,例如:

a<-TRUE
b<-1:20
c<-matrix(data=NA,ncol=2,nrow=10)

在第一次迭代结束时,我将这些对象存储在一个列表中:

myList<-list(a,b,c)

在第二次迭代中创建了新的a bc,它存储在同一列表中,覆盖了之前的abc

myList<-list(a,b,c)

我希望将新的abc添加到现有列表中,而不是覆盖列表。

可以在每次迭代时更新列表以避免过度使用吗?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

如果我理解了这个问题,您需要一个存储100个列表的地方。如果是这样的话,那么;

myList<-vector("list",100)

您现在有一个包含100个插槽的空列表。每次循环后,将输出列表分配给正确的插槽。这是为了迭代34将输出放在mylist[[34]]中。 myList中的每个条目本身都是您的结果列表。

答案 1 :(得分:2)

试试这个:

fun <- function() {
  #insert here as much code as you desire
  a<-TRUE
  b<-1:20
  c<-matrix(data=NA,ncol=2,nrow=10)

  list(a, b, c)
} 

replicate(100, fun(), simplify=FALSE)

如果您的函数在某种程度上取决于迭代,则应使用lapply代替。