2011-12-30 31 views
59

Tôi có một gói trong R (ROCR) mà tôi cần tải trong môi trường R của mình. Khi tải gói, một tập hợp các tin nhắn được in. Điều này là bình thường tốt, nhưng kể từ khi đầu ra của kịch bản R của tôi đang được sử dụng để phân tích thêm, tôi muốn hoàn toàn vô hiệu hóa tất cả các đầu ra này. Làm thế nào để làm điều đó? Hơn nữa, tôi muốn làm điều đó mà không cần phải sửa đổi ROCR chút nào, để người dùng tương lai của tập lệnh này cũng không phải làm điều đó.Tắt tin nhắn khi tải gói

Cho đến nay:

  • sink() không làm việc ở đây - chuyển hướng cả stdout và std err để /dev/null không làm gì cho tôi.
  • Không ngạc nhiên, options(warnings=-1) cũng không có tác dụng gì vì đây không phải là cảnh báo, mỗi lần được in.

Bạn nghĩ gì?

+0

những thông điệp nào được in? –

+0

Trong khi toàn bộ đầu ra là không cần thiết, một số dòng đầu tiên là: 'Đang tải gói bắt buộc: gplots Đang tải gói bắt buộc: gtools Tải gói bắt buộc: gdata' - Lưu ý rằng nó sẽ không cho phép tôi định dạng thư chính xác. – learner

+0

Sau đó tải 'gplots',' gtools' và 'gdata' trước khi tải' ROCR'. –

Trả lời

96

Chỉ cần sử dụng suppressMessages() xung quanh library() cuộc gọi của bạn:

[email protected]:~$ R 

R version 2.14.1 (2011-12-22) 
Copyright (C) 2011 The R Foundation for Statistical Computing 
ISBN 3-900051-07-0 
Platform: x86_64-pc-linux-gnu (64-bit) 
[...] 

R> suppressMessages(library(ROCR)) 
R>            # silently loaded 
R> search() 
[1] ".GlobalEnv"   "package:ROCR"   # it's really there  
[3] "package:gplots"  "package:KernSmooth" 
[5] "package:grid"  "package:caTools" 
[7] "package:bitops"  "package:gdata"  
[9] "package:gtools"  "package:stats"  
[11] "package:graphics" "package:grDevices" 
[13] "package:utils"  "package:datasets" 
[15] "package:methods" "Autoloads"   
[17] "package:base"  
R> 
+6

Bạn không phải sử dụng 'suppressPackageStartupMessages'? – hadley

+6

Không có lợi ích ngoài việc chi tiêu thêm X ký tự. Thêm 'suppressPackageStartupMessages' chỉ chặn các tin nhắn _startup_ nơi mà' suppressMessages() 'ưa thích của tôi ngăn chặn bất kỳ và tất cả các thông điệp (nhưng không phải' cat() 'khi tôi nhớ lại). Nhưng người ta không được phép sử dụng nó trong văn bản khởi động. –

+1

Nó cũng tuyệt vời mà đề nghị của Dirk ngăn chặn các tin nhắn từ các gói tùy thuộc cũng như khi chúng đang được nạp. –

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