我有一个循环,每次创建三个对象重复100次,例如:
a<-TRUE
b<-1:20
c<-matrix(data=NA,ncol=2,nrow=10)
在第一次迭代结束时,我将这些对象存储在一个列表中:
myList<-list(a,b,c)
在第二次迭代中创建了新的a b
和c
,它存储在同一列表中,覆盖了之前的abc
:
myList<-list(a,b,c)
我希望将新的abc
添加到现有列表中,而不是覆盖列表。
可以在每次迭代时更新列表以避免过度使用吗?
有人可以帮忙吗?
答案 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
代替。