1

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

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

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

myList<-list(a,b,c)

在第二次迭代 newa bc被创建,它存储在同一个列表中,覆盖前一个abc

myList<-list(a,b,c)

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

可以在每次迭代时更新列表以避免覆盖它吗?

有人可以帮忙吗?

4

2 回答 2

8

如果我理解这个问题,你想要一个地方来存储你的 100 个列表。如果一开始就这样做;

myList<-vector("list",100)

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

于 2013-08-30T14:20:44.227 回答
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改为使用。

于 2013-08-30T14:04:34.783 回答