我正在调试一些代码,它会发出几个警告,但是当我收到一个特定的警告时,我正试图停止代码,这样我就可以查看环境了.
例如:
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)
我想要发生的是功能停止在"正确的警告",但是一旦收到第一个警告,捕获就会停止.如何跳过不感兴趣的警告并停止对我感兴趣的警告?
我相信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)