2013-08-30 90 views
1

我有100次,每次創建三個對象重複循環,例如:創建列表的列表迭代

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

在第一次迭代I這些對象存儲在列表的末尾:

myList<-list(a,b,c) 

在新a bc創建第二次迭代存儲在同一目錄覆蓋以前abc

myList<-list(a,b,c) 

而不是覆蓋列表的,我想新abc添加到現有列表。

可以在列表中在每次迭代更新,以避免overwrting呢?

有人可以幫忙嗎?

+0

使用'lapply()'而不是循環。 – Andrie

+0

這是不可能的,因爲這是一個100行代碼的巨大模擬。該列表將存儲整個模擬結果 – db001

+0

那麼?你仍然可以使用'lapply'。 – Roland

回答

3

如果我理解這個問題,你要存儲100名名單的地方。如果是這樣,一開始就這樣做;

myList<-vector("list",100) 

您現在有一個有100個插槽的空列表。每個循環之後,將輸出列表分配到正確的插槽。這是迭代34把輸出在mylist[[34]]myList中的每個條目本身就是您的結果列表。

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來代替。

+0

但問題是,在每次迭代之前的A,B,C都被覆蓋,所以我不知道如何解決這個問題 – db001

+1

如果不這樣做,你需要什麼,你沒有解釋你的問題不夠好。 – Roland

+0

好的我已經編輯了這個問題,現在可能更清楚了嗎? – db001