【发布时间】:2017-01-19 12:29:37
【问题描述】:
我正在尝试构建一个矩阵模型,该模型在调用某些条件时结束 - 但是由于某种原因 break() 命令不起作用,尽管 stop() 可以。不幸的是 stop() 不是我需要的,因为我需要多次运行模型。
模型中的第一个中断命令有效,但我将其保留为 dth>100,以便您自己查看
n.steps <- 200
ns <- array(0,c(14,n.steps))
ns[13,1]<-rpois(1,3)
ns[14,1] <- 1
k<-0
for (i in 1:n.steps){
k<-k+1
ns[13,1]<-rpois(1,2)
death<-sample(c(replicate(1000,
sample(c(1,0), prob=c(surv.age.a, 1-surv.age.a), size = 1))),1)
ns[14,k] <- death
if (death == 0) {
dth <- sample(1:100, 1)
if (dth > 100) {
ns[14,k]<-0
print("stop.1")
break()
} else {
while (death == 0) {
if (ns[13, k] > 0) {
rep.vec[i]<-ns[13,k]
ns[13, k] <- ns[13, k] - 1
ns[14,k+1]<-1
print("replace")
} else {
if (ns[13, k] == 0) {
print("stop.2")
ns[14,k+1]<-0
break()
}
}
}
}
}
}
【问题讨论】:
-
使用
break而不是break(),它不起作用。 -
仍然无法正常工作:'(
-
奇怪的是,之前的 break() 命令确实有效,所以我没想到会是这样
-
break将带您退出最内层循环,它不会停止执行:在这种情况下,它将带您退出while循环而不是外部for循环。跨度> -
已根据您的要求更新