पैकेज लोड करने पर संदेश अक्षम करें


97

मेरे पास आर (आरओसीआर) में एक पैकेज है जिसे मुझे अपने आर वातावरण में लोड करने की आवश्यकता है। पैकेज लोड करने पर, संदेशों का एक सेट मुद्रित होता है। यह सामान्य रूप से ठीक है, लेकिन चूंकि मेरे आर स्क्रिप्ट के आउटपुट का उपयोग आगे के विश्लेषण के लिए किया जा रहा है, इसलिए मैं इस सभी आउटपुट को पूरी तरह से अक्षम करना चाहता हूं। मैं उसको कैसे करू? इसके अलावा, मैं आरओसीआर को संशोधित किए बिना इसे करना पसंद करूंगा, ताकि इस स्क्रिप्ट के भावी उपयोगकर्ताओं को ऐसा न करना पड़े।

अब तक:

  • sink()यहाँ काम नहीं करता है - दोनों stdout और std को पुनर्निर्देशित करने से /dev/nullमेरे लिए कुछ भी नहीं होता है।
  • अप्रत्याशित रूप से, options(warnings=-1)या तो कुछ भी नहीं करता है, क्योंकि ये चेतावनी नहीं हैं, प्रति से, मुद्रित किया जा रहा है।

कोई विचार?


क्या संदेश छप रहे हैं?

1
जबकि पूरा आउटपुट अनावश्यक है, पहली कई लाइनें हैं: Loading required package: gplots Loading required package: gtools Loading required package: gdata- ध्यान दें कि यह मुझे संदेश को सही ढंग से प्रारूपित नहीं करने देगा।
शिक्षार्थी

फिर लोड करें gplots, gtoolsऔर gdataलोड करने से पहले ROCR

2
@ जेक, ठीक है, उचित जवाब के लिए नीचे मेरा जवाब देखें।
डिर्क एडल्डबुलेटेल

6
Obligatory "इट्स ए पैकेज,
नॉट

जवाबों:


147

बस suppressMessages()अपने library()कॉल का उपयोग करें:

edd@max:~$ 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> 

19
क्या आप उपयोग करने वाले नहीं हैं suppressPackageStartupMessages?
हैडली

9
एक्स अधिक पात्रों को खर्च करने के अलावा कोई शुद्ध लाभ नहीं। प्लस suppressPackageStartupMessagesकेवल स्टार्टअप संदेशों को दबाता है जहां मेरे पसंदीदा suppressMessages()किसी भी और सभी संदेशों को दबाते हैं (लेकिन cat()जैसा कि मुझे याद नहीं है)। लेकिन किसी को स्टार्टअप पाठ में इसका उपयोग नहीं करना चाहिए।
डिर्क एडल्डबुलेटेल

1
यह भी बहुत अच्छा है कि डिर्क का सुझाव पैकेजों के साथ-साथ लोड होने के समय के संदेशों को भी दबा देता है।
मैट बन्नर्ट

2
क्या उन स्टार्टअप संदेशों को पकड़ने का कोई तरीका है? मैं चेतावनियों और त्रुटियों को पकड़ सकता हूं, लेकिन ऐसे अन्य संदेशों को पकड़ना नहीं जानता।
एड्रियन

1
@ एड्रियन हाँ वहाँ है, कोशिश में लपेटो और संदेश हैंडलर प्रदान करें
jangorecki

20

डिर्क का उत्तर सभी संदेशों को दबा देता है और उन संदेशों के लिए विशिष्ट नहीं है जो पैकेज लोड करते समय उत्पन्न होते हैं।

पूछे गए प्रश्न का अधिक सटीक समाधान है:

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

थोड़ा और विस्तृत विवरण यहां पाया जा सकता है


10

SuppressPackageStartupMessages का उपयोग करें, @MehradMahmoudian द्वारा उत्तर देखें। पूर्णता के लिए, उपयोग के उदाहरणों को जोड़ना:

एक पुस्तकालय के लिए suppressPackageStartupMessages(...), उदाहरण के लिए , उपयोग करें :

suppressPackageStartupMessages(library(ggplot2))

कई पुस्तकालयों के लिए suppressPackageStartupMessages({...}), उदाहरण के लिए , उपयोग करें :

suppressPackageStartupMessages({
    library(ggplot2)
    library(ggdendro)
})


1

quietly = Tनीचे दिखाए अनुसार जोड़कर समस्या हल हो जाएगी:

suppressWarnings(suppressMessages(library("dplyr", quietly = T)))

कई पैकेज के मामले में आप उपयोग कर सकते हैं:

## specify the package names
PKGs <- c("affy","gcrma","readxl","ggplot2","lattice" )

और वे नीचे के रूप में lapply का उपयोग करें:

lapply(PKGs, library, character.only = TRUE ,quietly = T)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.