出现错误时保存For循环的结果

时间:2018-01-04 05:37:51

标签: r for-loop

假设我有这个循环

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

我可以在其工作和返回结果甚至没有完成所有索引的情况下停止循环吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用tryCatch捕获这样的警告或错误。一旦出现这种情况,循环将停止,控制权将转移到相应的warningerror函数。

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