Làm cách nào để viết mã R cho phép tôi thực thi một đường dẫn khác trong mã của tôi nếu xảy ra tình trạng lỗi? Tôi đang sử dụng một chức năng có xu hướng ném một lỗi. Khi nó đáp ứng một điều kiện lỗi, tôi muốn thực hiện một chức năng khác. Dưới đây là một ví dụ cụ thể:bắt lỗi và sau đó phân nhánh logic
require(SuppDists)
parms <- structure(list(gamma = -0.841109044800762, delta = 0.768672140584442,
xi = -0.359199299528801, lambda = 0.522761187947026, type = "SB"), .Names = c("gamma",
"delta", "xi", "lambda", "type"))
pJohnson(.18, parms)
chức năng pJohnson nên thất bại với các lỗi sau:
Error in pJohnson(0.18, parms) :
Sb values out of range.
tôi có thể làm cho các lỗi đi im lặng bằng cách sử dụng:
try(pJohnson(.18, parms), silent=T)
nhưng những gì tôi thực sự muốn làm là thực thi hàm alternativeFunction()
nếu pJohnson(.18, parms)
trả về lỗi.
Có vẻ như chức năng withCallingHandlers()
sẽ giúp tôi, nhưng tôi không thể tìm ra cách để nắm bắt lỗi và làm cho nó chạy alternativeFunction()
chỉ khi một điều kiện lỗi.
rõ ràng là một trường hợp của tôi không nghĩ "đủ thân thiện". cảm ơn bạn về sự phản ứng nhanh! –
'if (thừa kế (t," try-error ")) alternativeFunction()' là một sự thay thế tốt đẹp, thậm chí còn nhiều hơn 'đối tượng' hơn '% trong%'. –
Điểm tốt. Lớp trừu tượng đối tượng cho các lớp s3 rất trong suốt, tôi gần như quên nó ở đó. –