패키지로드시 메시지 비활성화


103

내 R 환경에서로드해야하는 R (ROCR)에 패키지가 있습니다. 패키지를로드하면 메시지 세트가 인쇄됩니다. 이것은 일반적으로 괜찮지 만 내 R 스크립트의 출력이 추가 분석에 사용되고 있으므로이 모든 출력을 완전히 비활성화하고 싶습니다. 어떻게하나요? 또한 ROCR을 전혀 수정하지 않고 수행하는 것을 선호하므로이 스크립트의 향후 사용자도 그렇게 할 필요가 없습니다.

지금까지:

  • sink()여기서 작동하지 않습니다-stdout과 std err을 모두 리디렉션하여 /dev/null아무것도하지 않습니다.
  • 당연히 options(warnings=-1)경고 자체가 인쇄되지 않기 때문에 아무것도하지 않습니다.

이견있는 사람?


어떤 메시지가 인쇄되고 있습니까?

1
전체 출력이 불필요하지만 처음 몇 줄은 다음과 같습니다 Loading required package: gplots Loading required package: gtools Loading required package: gdata.-메시지를 올바르게 형식화 할 수 없습니다.
학습자

그런 다음로드 gplots, gtoolsgdata선적하기 전에 ROCR.

2
@Jack, nope, 적절한 수정은 아래 내 대답을 참조하십시오.
Dirk Eddelbuettel 2011

6
여기에 필수 "의 패키지가 아닌 라이브러리"주석
Spacedman

답변:


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 2011

10
X 더 많은 캐릭터를 소비하는 것 외에는 순이익이 없습니다. Plus 는 내가 선호 하는 대로 모든 메시지를 억제하는 시작 메시지suppressPackageStartupMessages 만 억제합니다 ( 내가 기억하는대로는 아님 ). 그러나 시작 텍스트에서 사용해서는 안됩니다. suppressMessages()cat()
Dirk Eddelbuettel 2011

1
Dirk의 제안이 패키지가로드 될 때 종속 된 패키지로부터 메시지를 억제하는 것도 좋습니다.
Matt Bannert

2
이러한 시작 메시지를 캡처하는 방법이 있습니까? 경고 및 오류를 캡처 할 수 있지만 다른 메시지를 캡처하는 방법을 모릅니다.
Adrian

1
이 @Adrian 예는, tryCatch로 포장 및 메시지 핸들러 제공
jangorecki

23

Dirk의 대답 은 모든 메시지를 억제하며 패키지를로드하는 동안 생성되는 메시지에만 국한되지 않습니다.

질문에 대한 더 정확한 해결책은 다음과 같습니다.

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

좀 더 자세한 설명은 여기 에서 찾을 수 있습니다.


14

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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.