我目前正在学校学习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
有人可以帮助我弄清楚我在做什么错吗?非常感谢!
答案 0 :(得分:1)
您在函数中初始化输出矢量的方式不正确。使用N <- numeric(tmax + 1)
代替length(N) <- tmax
。 R中的向量使用基于1的索引而不是基于0的索引。
关于返回的值,请使用return(list(t = 0:tmax, N = N))
。