【发布时间】:2016-02-20 23:07:03
【问题描述】:
很抱歉,我又遇到了 for 循环的问题。我正在尝试将循环的人口估计中的最终数字保存到新矩阵中,但我只能让人口估计显示在第 100 行。我知道它与育种Pop2 有关,但我无法弄清楚。任何帮助将非常感激。请在下面找到代码:
finalPop=matrix(nrow=102, ncol=1)
for(i in 1:100){
SWWAyears=data.frame(iteration=rep(NA,101),pop=NA)
breedingPop<-90000
fallMig<-.825
springMig<-.825
winterSurvival<-rbeta(100,.95,.05)
npFecund<-rbinom(100, 3.0, .9)
pFecund<-rbeta(100, .85,.25)
breedingSurvival<-rbeta(100,.95,.05)
# Set initial starting condition
SWWAyears[1,2]=breedingPop
for(years in 2:101) {
fallPop<-(SWWAyears[years-1,2]*fallMig)
for (i in 1:100){
winterPop<-(fallPop*winterSurvival[i])}
springPop<-(winterPop*springMig)
for (i in 1:100){
summerPop<-(springPop*breedingSurvival[i])
}
for(i in 1:100){
breedingPop2<-((summerPop*.26)*npFecund[i])+((summerPop*.14)*pFecund[i])+(summerPop*.60)
}
SWWAyears[years,1]=years
SWWAyears[years,2]<-breedingPop2
}
finalPop[i,1]<-breedingPop2
}
【问题讨论】:
-
您的
i正在每个for(i in 1:00)循环中更新。在最后一个循环结束时,i设置为100。因此,在您的finalPop[i, 1]分配中,您将始终使用finalPop[100, 1] <- breedingPop2 -
尽管如此,我认为您的计算存在更多基本问题,并且它没有按照您认为的那样做。我已经更新了我的解决方案以尝试突出显示这一点。
标签: r