所以我有一個矩陣模型我運行,並在模型被告知要停止我得到一個消息,說「錯誤:」獲取「錯誤」消息,當我跑我的R中循環
現在模型運行良好,當它應該等於停止它時。但這意味着我不能在循環中多次運行它,這並不理想。所以我想知道是否有辦法讓這個錯誤信息停止發生,或繞過它。
假下面的代碼:
n.steps <- 100
x <- array(0,c(85,n.steps))
mnalph<-50
x[12,]<-2
x[24,]<-2
x[40,]<-3
x[50,]<-1
x[70,]<-2
x[85,] <- 1
k<-0
for (i in 2:n.steps){
k<-k+1
a<-sample(c(replicate(1000,
sample(c(1,0), prob=c(0.75, 0.25), size = 1))),1)
mat[85,85] <- a
currclass <- replacementclass <- round(rnorm(1, mean = mnalph, sd = 11))
if (a == 0) {
d <- sample(1:100, 1)
if (d > 60) {
x[85,k]<-0
stop()
} else {
while(a == 0) {
while (a == 0) {
if (x[currclass, k] > 1) {
x[currclass, k] <- x[currclass, k] - 1
a <- 1
x[85,k]<-a
} else {
nonzeroes<-which(x[0:84,k]>0)
distances<-abs(nonzeroes - currclass)
minlocs<-nonzeroes[which(distances==min(distances))]
replacementclass<-minlocs
if(x[replacementclass, k]>=1){
x[replacementclass, k]<- x[replacementclass, k] - 1}
else {
x[replacementclass, k]<- 0}
a <- 1
x[85,k]<-a
if (all(x[11:84, k] == 0)) {
stop()
}
}
}
}
}
}
}
我得到的錯誤是'k.vec [i] < - k:object'k.vec'找不到'的錯誤,實際上你的代碼沒有任何叫做k.vec的東西。你是否想初始化它 - 也許用'k.vec = NULL'。順便說一句,它看起來像你也參考其他變量,a.vec和mat,這是永遠不會創建的。 – G5W