1
我調用了其他的lib函數,它執行計算並拋出警告消息。我嘗試使用tryCatch()來捕獲消息,但不知道如何保留計算值和警告消息。這裏是示例(簡化)代碼,我希望mydiv函數具有計算值和警告消息。現在mydiv調用將返回除法值或警告,但不是兩者。R函數返回值以及警告消息
mydiv = function(x, y){
tryCatch({
# raise warning message
if (x > y)
warning("throw a warning")
# function calc result
x/y
},
warning = function(war) {
flag = paste("DIV Warning:", war$message)
return (flag)
},
error = function(err) {
flag = paste("DIV Err", err)
return (flag)
})
}
如果我稱X = mydiv(2,1),然後x具有值 「DIV警告:拋出一個警告」;如果x = mydiv(2,4),則x:[1] 0.5。 所以我的問題是:1.使用tryCatch:如果可能的話如何返回計算的值和警告消息; 2.是否有更好的方法從函數中獲取兩個值。