Я пытаюсь смоделировать процесс брендинга с отрицательным биномиальным распределением потомства. Когда я запускаю один процесс ветвления, код работает нормально. Когда я обертываю его в функцию и использую функцию «replicate» для имитации многих ветвящихся процессов, он выдает ошибку: «замена имеет нулевую длину»
Я - преобразователь SAS, поэтому относительно новый для функций Rдля помощи! Надеюсь, это простое исправление, и любые советы по улучшению всегда приветствуются. Заранее спасибо!
#######
#Single NB Branching Process with 20 generations
n<-20 #20 generations
r0<-0.9
k<-0.25
#initialize list of population size at generation n
Z<-1
#Initiate with one index case generation 0
Z[0] <- 1
#Cluster size a generation 1
Z[1] <- rnbinom(Z[0], k,r0)
for (i in 2:n)
{
if(Z[i-1]==0) {Z[i]=0} else
{
x<-rnbinom(Z[i-1], k,r0)
Z[i]<- sum(x)
}
}
print(Z)
######################
#Wrap in a function and replicate 300 times
nbbp<-function(n, r0, k)
{
#initialize list of population size at generation n
Z<-1
#Initiate with one index case generation 0
Z[0] <- 1
#Cluster size a generation 1
Z[1] <- rnbinom(Z[0], k,r0)
for (i in 2:N)
{
if(Z[i-1]==0) {Z[i]=0} else
{
x<-rnbinom(Z[i-1], k,r0)
Z[i]<- sum(x)
}
}
}
ds<-replicate(100,nbbp(20,0.9,0.25))
#Returns: Error in Z[1] <- rnbinom(Z[0], k, r0) : replacement has length zero