একটি প্যাকেজ লোড করার পরে বার্তা অক্ষম করুন


103

আমার আর (আরওসিআর) এ একটি প্যাকেজ রয়েছে যা আমার আর পরিবেশে লোড করা দরকার। প্যাকেজটি লোড করার পরে, বার্তার একটি সেট মুদ্রিত হয়। এটি সাধারণত জরিমানা, তবে যেহেতু আমার আর স্ক্রিপ্টের আউটপুটটি আরও বিশ্লেষণের জন্য ব্যবহৃত হচ্ছে আমি এই আউটপুটটির সমস্তটিকে পুরোপুরি অক্ষম করতে চাই। আমি কেমন করে ঐটি করি? তদুপরি, আমি আরওসিআরকে মোটেও সংশোধন না করেই এটি করতে পছন্দ করব, যাতে এই স্ক্রিপ্টের ভবিষ্যতের ব্যবহারকারীদেরও এটি না করতে হয়।

যতদূর:

  • sink()এখানে কাজ করে না - /dev/nullআমার পক্ষে কিছু করার জন্য stdout এবং std উভয় ভুলকে পুনঃনির্দেশ করা ।
  • আশ্চর্যজনকভাবে, options(warnings=-1)কোনও কিছুই হয় না, যেহেতু এগুলি প্রতি সতর্কতা নয়, মুদ্রিত হচ্ছে।

কোন চিন্তা?


কি বার্তা মুদ্রিত হচ্ছে?

4
পুরো আউটপুটটি অপ্রয়োজনীয় হওয়ার পরে প্রথম কয়েকটি লাইন হ'ল: Loading required package: gplots Loading required package: gtools Loading required package: gdata- দ্রষ্টব্য যে এটি আমাকে বার্তাটি সঠিকভাবে ফর্ম্যাট করতে দেয় না।
শিখর

তারপরে লোড করুন gplots, gtoolsএবং gdataলোড করার আগে ROCR

4
@ জ্যাক, না, সঠিক সমাধানের জন্য নীচে আমার উত্তরটি দেখুন।
ডার্ক এডেলবুয়েটেল

6
বাধ্যতামূলক "এটি একটি প্যাকেজ, একটি গ্রন্থাগার নয়" এখানে মন্তব্য
স্পেসডম্যান

উত্তর:


152

কেবলমাত্র 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> 

20
আপনি ব্যবহার করার কথা না suppressPackageStartupMessages?
hadley

10
এক্স আরও বেশি অক্ষর ব্যয় করা ছাড়া কোনও নেট লাভ নয়। প্লাস suppressPackageStartupMessagesকেবল প্রারম্ভিক বার্তাগুলি দমন করে যেখানে আমার পছন্দসই হিসাবে suppressMessages()কোনও এবং সমস্ত বার্তাকে দমন করে (তবে cat()আমি যেমন মনে করি তা নয় )। তবে একটিকে স্টার্টআপ পাঠ্যে ব্যবহার করার কথা নয়।
ডিস্ক এডেলবুয়েটেল

4
এটি খুব দুর্দান্ত যে ডার্কের পরামর্শগুলি নির্ভরযোগ্য প্যাকেজগুলি লোড করার সময় বার্তাগুলিকে দমন করে।
ম্যাট ব্যানার

4
এই স্টার্টআপ বার্তা ক্যাপচার কোনও উপায় আছে? আমি সতর্কতা এবং ত্রুটিগুলি ক্যাপচার করতে পারি, তবে কীভাবে অন্যান্য এই বার্তাগুলি ক্যাপচার করতে হয় তা জানি না।
অ্যাড্রিয়ান

4
@ অ্যাড্রিয়ান হ্যাঁ আছে, ট্রাইচ্যাচে আবদ্ধ করুন এবং বার্তা হ্যান্ডলার সরবরাহ করুন
জঙ্গোরেকি

23

ডার্কের উত্তর সমস্ত বার্তাকে দমন করে এবং প্যাকেজ লোড করার সময় উত্পন্ন বার্তাগুলির সাথে নির্দিষ্ট নয়।

জিজ্ঞাসিত প্রশ্নের আরও সঠিক সমাধান হ'ল:

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

আরও কিছু বিশদ বিশদ এখানে পাওয়া যাবে


14

দমনপ্যাকেজ স্টার্টআপ ম্যাসেজগুলি ব্যবহার করুন, @ মেহরাদমাহমৌদিয়ানের উত্তর দেখুন। সম্পূর্ণতার জন্য, ব্যবহারের উদাহরণ যুক্ত করে:

একটি লাইব্রেরির 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(PKGs, library, character.only = TRUE ,quietly = T)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.