2013-02-03 66 views
5

Tôi muốn nhận được NA khi một hàm trả về Lỗi thay vì mã tạm dừng.Gặp lỗi khi sản xuất NA

Tôi hiện đang sử dụng

try.test<-try(results<-lm(log(0)~1)) 
if(class(try.test)=="try-error"){results<-NA} 

Tôi cũng đã cố gắng chơi với tryCatch.

Tôi muốn tìm một giải pháp chức năng/dòng đơn.

Trả lời

12

Hãy thử

result <- tryCatch(lm(log(0)~1), error=function(err) NA) 

Nhưng điều này bắt tất cả các lỗi, không chỉ những từ nhật ký (0).

4

Cách thức giải quyết vấn đề của bạn ít hơn một cách sang trọng nhưng không kém phần quan trọng.

results <- NA 
try(results<-lm(log(0)~1), silent = TRUE) 

Nếu bạn đang tìm kiếm một cách thanh lịch để xử lý lỗi, tôi khuyên bạn nên xem xét khái niệm một đơn nguyên; sử dụng các cấu trúc này làm giảm số lượng "if (! na (x)) ...." bản mẫu trong kịch bản lệnh của bạn.

Các vấn đề liên quan