Làm cách nào để loại bỏ các cảnh báo trên toàn cầu trong R Script


174

Tôi có một kịch bản R dài ném một số cảnh báo, mà tôi có thể bỏ qua. tôi có thể sử dụng

suppressWarnings(expr)

cho các tuyên bố duy nhất. Nhưng làm thế nào tôi có thể ngăn chặn các cảnh báo trong R trên toàn cầu? Có một lựa chọn cho điều này?

Câu trả lời:


228

Bạn đã có thể sử dụng

options(warn=-1)

Nhưng lưu ý rằng tắt tin nhắn cảnh báo trên toàn cầu có thể không phải là một ý tưởng tốt.

Để bật lại cảnh báo, hãy sử dụng

options(warn=0)

(hoặc bất cứ điều gì mặc định của bạn là dành cho warn, xem câu trả lời này )


5
Cách này hiệu quả, nhưng cách tiếp cận của Francesco Napolitano từ ngày 22 tháng 9 năm 2015, là phương pháp an toàn hơn và có thể áp dụng trên toàn cầu.
Andy Clifton

Tôi đồng ý với @Andy và câu trả lời của anh ấy nên được đánh dấu là câu trả lời được chấp nhận.
JASC

105

Bạn muốn options(warn=-1). Tuy nhiên, lưu ý rằng đó warn=0không phải là mức cảnh báo an toàn nhất và không nên được coi là mức hiện tại, đặc biệt là trong các tập lệnh hoặc hàm. Do đó, cách an toàn nhất để tắt cảnh báo tạm thời là:

oldw <- getOption("warn")
options(warn = -1)

[your "silenced" code]

options(warn = oldw)

41

Tôi đã thay thế các printfcuộc gọi bằng các cuộc gọi đến warningtrong mã C bây giờ. Nó sẽ có hiệu lực trong phiên bản 2.17.2 sẽ có vào tối mai. Sau đó, bạn sẽ có thể tránh các cảnh báo với suppressWarnings()hoặc bất kỳ phương pháp nào được đề cập ở trên.

suppressWarnings({ your code })

6
Đây là cách chính xác để làm điều đó. Nên được đánh dấu là câu trả lời.
Denis

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.