2013-10-25 4 views
0

У меня возникли трудности с хранением всех моих данных из цикла middle. когда я пытаюсь и извлекаю данные после того, как цикл out запустил единственные данные, которые я могу достичь, - это окончательный прогон. как я могу хранить все прогоны D в одной матрице?проблема с циклом хранения (вложенные для циклов)

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) 

Надеюсь, что это поможет!

Смежные вопросы