我试图在r中使用for循环来运行100年的人口模拟,但是我的代码存在问题,并且每年都有相同的值。我知道它与breedingPop有关但我无法弄清楚如何让最后的breedingPop用于循环的每个后续运行。这是我的代码:
SWWAyears<-read.csv("C:/Users/Bryan/Desktop/SWWAyears.csv")
SWWAyears$iteration<-NA
breedingPop<-84000
fallMig<-.815
winterSurvival<-.99
springMig<-.815
npFecund<-2.75
pFecund<-.60
breedingSurvival<-.99
for(years in 1:100){
fallPop<-(breedingPop*fallMig)
winterPop<-(fallPop*winterSurvival)
springPop<-(winterPop*springMig)
summerPop<-(springPop*breedingSurvival)
breedingPop2<-(((summerPop*.26)*npFecund((summerPop*.14)*pFecund)+(summerPop*.60))
SWWAyears[,2]<-breedingPop2
}
答案 0 :(得分:1)
我将采取的解决方案是首先将您的起始种群数量(84000)设置为数据框第1行的值。然后在循环内部,您可以引用(第1年)行来获取此值(上一年度),并记录当前年份在(年)行中的新计算值。见下文:
{{1}}
另外,你的初始breedingPop2定义产生了一个错误,所以我把它调整到我认为你想要的 - 不确定我是否正确,但如果需要,这应该是一个小修复。