捕获特定警告并忽略其他警告

seb*_*n-c 6 r try-catch

我正在调试一些代码,它会发出几个警告,但是当我收到一个特定的警告时,我正试图停止代码,这样我就可以查看环境了.

例如:

myfun <- function(){
  warning("The wrong warning")
  warning("The right warning")
  print("The end of the function")
}

tryCatch(myfun(),
         warning = function(w){
           if(grepl("right", w$message)){
             stop("I have you now")
           } else {
             message(w$message)
           }
         })
Run Code Online (Sandbox Code Playgroud)

我想要发生的是功能停止在"正确的警告",但是一旦收到第一个警告,捕获就会停止.如何跳过不感兴趣的警告并停止对我感兴趣的警告?

fan*_*nli 5

我相信withCallingHandlers这就是你想要的:忽略 tryCatch() 中的简单警告/错误

withCallingHandlers(myfun(),
   warning = function(w){
     if(grepl("right", w$message)){
       stop("I have you now")
     } else {
       message(w$message)
     }
   })
Run Code Online (Sandbox Code Playgroud)