如何在第一次警告时使用tryCatch退出for循环?

时间:2017-10-29 18:44:28

标签: r for-loop try-catch

我有一个简单的for循环,一旦出现警告,我想从一个单个消息退出。我和tryCatch一样尝试过这样:

for (i in 1:10) {        
  tryCatch({
    sqrt(-1)},
    warning = function(error_message) {
      message("My own warning message.")
      break})}

但这会产生错误:

Error in value[[3L]](cond) : no loop for break/next, jumping to top level

如果我省略break,我会收到十个警告而不是一个警告。

1 个答案:

答案 0 :(得分:2)

一种选择是将break功能置于tryCatch

之外
for (i in 1:10) {        
  tryCatch({sqrt(-1)},
           warning = function(error_message) {
             message("My own warning message.")
             })
  break
  }

在这种情况下,错误不会出现