Что не так с моей функцией R логистической карты - PullRequest
0 голосов
/ 30 сентября 2018

В настоящее время я изучаю R в школе, и я застрял с этим вопросом:

Это мой код:

logistic.map <- function(N0, r, K, tmax) {
  length(N) <- tmax
  N[1] <- N0
  for (i in 1:tmax) N[i+1] <- N[i] + r * N[i] * (1 - N[i] / K)
  return(list(t = 0:tmax, N = tmax))
  }

r1 <- logistic.map(2,0.2,100,50)
r2 <- logistic.map(2,2.2,100,50)
r3 <- logistic.map(2,2.9,100,50)

xlab="Years"
ylab="Population"
plot(r1$t, r1$N, xlab=xlab, ylab=ylab)
plot(r2$t, r2$N, xlab=xlab, ylab=ylab)
plot(r3$t, r3$N, xlab=xlab, ylab=ylab)

Всякий раз, когда я запускаю его, он возвращает ошибку:

Error in logistic.map(2, 0.2, 100, 50) : object 'N' not found
Error in logistic.map(2, 2.2, 100, 50) : object 'N' not found
Error in logistic.map(2, 2.9, 100, 50) : object 'N' not found

Может ли кто-нибудь помочь мне понять, что я делаю неправильно?Большое спасибо!

1 Ответ

0 голосов
/ 30 сентября 2018

Ваш способ инициализации выходного вектора в вашей функции неверен.Используйте N <- numeric(tmax + 1) вместо length(N) <- tmax.Векторы в R используют индексацию на основе 1, а не индексацию на основе 0.

Что касается возвращаемых значений, используйте return(list(t = 0:tmax, N = N)).

...