2013-10-25 104 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) 

希望有帮助!