Tôi đã viết một tập lệnh R ghi các thông báo (báo cáo tiến trình) vào một tệp văn bản. Tôi đổi tùy chọn error
để khi xảy ra lỗi, thông báo lỗi cũng được ghi vào tập tin đó:Dừng một tập lệnh R mà không nhận được thông báo "Lỗi trong khi kết thúc"
options(error = function() {
cat(geterrmessage(),file = normalizePath("logs/messages.txt"),append = TRUE)
stop()
})
Nó hoạt động, nhưng tôi nhận được thông báo này trong giao diện điều khiển cửa sổ/thiết bị đầu cuối khi một lỗi nào xảy ra:
Error during wrapup:
Execution halted
Vì vậy, tôi nghĩ có cách tốt hơn để làm gián đoạn quá trình thực thi tập lệnh ... hay không?
Tôi nghi ngờ bạn phải xóa 'stop()' khỏi điều này. – Andrie
Điều gì xảy ra sau đó là nếu tôi chạy tập lệnh với Rscript.exe myscript.R, lỗi được báo cáo nhưng kịch bản chỉ tiếp tục mà không dừng lại. –
Thử sử dụng q() thay vì dừng(). Trình xử lý lỗi được gọi bằng cách sử dụng hàm stop() của bạn, do đó dừng từ bên trong dừng ... có vẻ giống như đệ quy. Điều đó * có thể * là những gì là sai. –