假设我有这个循环
results<-c()
score<-c(19,14,13,9,"A",15)
for(index in 1:length(score)){
results[index]<- index + score[index]
}
如何在错误发生之前返回结果?
> results
[1] 20 16 16 13
我可以在其工作和返回结果甚至没有完成所有索引的情况下停止循环吗?
答案 0 :(得分:1)
您可以尝试使用tryCatch捕获这样的警告或错误。一旦出现这种情况,循环将停止,控制权将转移到相应的warning
或error
函数。
results<-c()
score<-c(19,14,13,9,"A",15)
tryCatch(expr = {
for(index in 1:length(score)){
results[index]<- index + as.numeric(score[index])
}
},warning=function(w){print(w)},
error=function(e){print(e)},
finally = results)
<simpleWarning in doTryCatch(return(expr), name, parentenv, handler): NAs introduced by coercion>
> results
#[1] 20 16 16 13
答案 1 :(得分:1)
我认为这里的断流控制很方便:
results<-c()
score<-c(19,14,13,9,"A",15)
for(index in 1:length(score)){
if(is.na(suppressWarnings(as.numeric(score[index])))){
break
}
results[index]<- index + as.numeric(score[index])
}
results
#[1] 20 16 16 13