2013-10-25 102 views
0

我無法存儲我的中間循環中的所有數據。當我嘗試和檢索外部for循環後運行唯一的數據,我能夠達到的數據是最終的運行。我如何將所有D的運行存儲在單個矩陣中?for循環存儲問題(嵌套for循環)

set.seed(3690)

iterations <- 20 
mean_birthrate <- 0.4 
stand_dev_birthrate <- 0.1 
mean_survival_rate <- 0.68 
stand_dev_survival <- 0.07 
initial_population <- 100 
period <- 20 
End_Year <- 2013+period 

birthrate <- rnorm(n=1,mean=mean_birthrate,sd=stand_dev_birthrate) 
birthrate 
survival <- rnorm(n=1,mean=mean_survival_rate,sd=stand_dev_survival) 
survival 

growth_rate <- birthrate - (1-survival) 
growth_rate 


for (k in 1:50) { 
D <- numeric(period) 
D[1] <- initial_population 

for (i in 1:period) { 
    D[i+1] <- D[i] + ((rnorm(n=1,mean=mean_birthrate,sd=stand_dev_birthrate) - (1-rnorm(n=1,mean=mean_survival_rate,sd=stand_dev_survival))) * D[i]) 
    } 

print(D) 

if (k==1) 
plot(D, typ="l",ylab="Number of Bobcats",xlab="Year",ylim=c(50,1700),xaxt='n') 
if (k>1) 
lines(D,col = rgb(0,0,0,0.1),xaxt='n') 
} 

回答

0

如果你嵌套for循環,你需要嵌套lists(或一些其他形式來捕捉n x m許多成果)

#outter loop 
for (i in...) 
    D[[i]] <- list() 

    #inner loop 
    for (j in ...) 
    D[[i]][[j]] <- value 
    # or different syntax: 
    D[[c(i, j)]] <- calue 

0

我有類似的問題,並用一個預先定義的變量解決它,如下所示:

DATA <- list() 
j <- 0 
for(k in 1:10){ 
    for(i in 1:5){ 
    temp.DATA <- i*k #or whatever the loop does 
    j <- j+1 
    DATA[[j]] <- temp.DATA 
    } 
} 
DATA2 <- do.call(rbind.data.frame, DATA) 

希望有幫助!