如何将循环设置为运行到最大值(Dend(?我只想看看它会长得有多快、有多深,但我想设定一个最大值,说它不能长到Dend之外。
我收到一个错误,说明
In if (D == Dend) { :
the condition has length > 1 and only the first element will be used
代码
D0 <- 0
Dend <- 4200
r <- 5 growth rate
days <- 1000
n_steps <- days*1
D <- rep(NA, n_steps+1)
D <- D0
for (time in seq_len(n_steps)){
if (D == Dend){
break} else
D[time + 1] <- r + D[time]
}
D
plot(-D, las=1)
如果你想要一个for
循环,它可能是低于的
for (time in seq_len(n_steps)){
if (tail(D,1) >= Dend) break
D[time + 1] <- r + D[time]
}
我认为使用seq
可以在没有任何循环的情况下实现您想要的:
D <- seq(D0, Dend, r)
如果必须使用for
循环,可以使用:
for (time in seq_len(n_steps)){
temp <- r + D[time]
if (temp >= Dend) break
D[time + 1] <- temp
}
我们也可以使用while
循环:
i <- 1
while(TRUE) {
temp <- r + D[i]
if(temp > Dend) break
i <- i + 1
D[i] <- temp
}