如何使用R中的apply循环模拟种群动态

时间:2014-03-13 17:10:02

标签: r loops simulation apply

我正在尝试模拟R中的填充,但我的代码目前包含嵌套for循环,我想用apply循环替换,所以我的代码运行得更快,但我不太确定如何。我已经阅读了some existing topics关于此事,但我认为我的情况不同,因为我不只是预测增长,而是生殖和生存。

我有两个包含生存和繁殖概率的载体。我将为这些模拟一些值。

St = rep(c(0.82, 0.89, 0.93), 3)
Bt = rep(c(0.13, 0.24, 0.17), 3)

我现在要做的是创建一个包含变量年,幸存者,出生人口,人口规模和人口增长的数据框。一年是微不足道的。我模仿其他人的方式是用一年中的生存概率杀死一些起始人口,然后将生殖概率应用于幸存者以获得出生人数。从这些计算人口规模和增长。我已经用嵌套在while循环中的两个for循环完成了这个。

count <- 0
years <- 9
population <- 200
survivors <- vector()
births <- vector()
growth <- vector()

while (count < years) {
count <- count + 1
for (i in St) {
  survivors[count] <- rbinom(n=1, size=population[count], prob=i)
}
for (i in Bt) {
  births[count] <- rbinom(n=1, size=survivors[count], prob=i)
}
growth[count] <- (population[count] - survivors[count]) + births[count]
population[count+1] <- population[count] + growth[count]
}
population <- population[2:length(population)]
year <- 1:years
data <- data.frame(year, births, survivors, population, growth)

有没有办法使用apply循环生成此模拟时间序列?我有点难过,因为每年循环生育的结果取决于幸存者循环的结果。

0 个答案:

没有答案
相关问题