我正在调试一些代码,它会发出一些警告,但是当我收到一个特定的警告时,我正试图停止代码,这样我就可以查看环境了。
例如:
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)
}
})
我想要发生的是功能停止在“正确的警告”,但是一旦收到第一个警告,捕获就会停止。我如何跳过那些不感兴趣的警告并停止那些我感兴趣的警告?
答案 0 :(得分:4)
我相信withCallingHandlers
就是你想要的:Disregarding simple warnings/errors in tryCatch()
withCallingHandlers(myfun(),
warning = function(w){
if(grepl("right", w$message)){
stop("I have you now")
} else {
message(w$message)
}
})