2013-12-02 2 views
5

Я пытаюсь отключить сообщения, объясняющие, что некоторые функции маскируются другими пакетами. Я пробовал разные комбинации, но никто не доставлял то, что мне нужно.Сообщения о молчании о маскированных функциях

Кусок у меня есть:

<<loadpkgs, echo=FALSE, warning=FALSE, message=FALSE>>= 
suppressPackageStartupMessages(library(doMC)) 
suppressPackageStartupMessages(library(aroma.affymetrix)) 
suppressPackageStartupMessages(library(crlmm)) 
suppressPackageStartupMessages(library(snpStats)) 
suppressPackageStartupMessages(library(pd.genomewidesnp.6)) 
suppressPackageStartupMessages(library(GenomicRanges)) 
suppressPackageStartupMessages(library(ggbio)) 
@ 

Но выход (который я надеялся, что не должно быть ни одного) является (в результате PDF):

## Loading required package: foreach 
## foreach: simple, scalable parallel programming from Revolution Analytics 
## Use Revolution R for scalability, fault tolerance and more. 
## http://www.revolutionanalytics.com 
## Loading required package: iterators 
## Loading required package: parallel 
## Loading required package: R.utils 
## Loading required package: R.oo 
## Loading required package: R.methodsS3 
## R.methodsS3 v1.5.2 (2013-10-06) successfully loaded. See ?R.methodsS3 for help. 
## R.oo v1.15.8 (2013-10-10) successfully loaded. See ?R.oo for help. 
## 
## Attaching package: ’R.oo’ 
## 
## The following objects are masked from ’package:methods’: 
## 
## getClasses, getMethods 

Любые мысли о том, как решить эту проблему ?

+0

Поскольку knitr - это пакет R, ваш вопрос может получить лучшую экспозицию, если вы добавите тег R. – ADTC

ответ

4

Чтобы избавиться от «Загрузка ...» сообщения используют quietly=TRUE в вызове библиотеки (и продолжают использовать suppressPackageStartupMessages):

suppressPackageStartupMessages(library(gdata, quietly=TRUE)) 

Если вы хотите, чтобы сделать это более компактный, может быть:

pkgs <-c('gdata', 'doMC', 'aroma.affymetrix', 'crlmm', 'snpStats', 
     'pd.genomewidesnp.6', 'GenomicRanges','ggbio') 
for(p in pkgs) suppressPackageStartupMessages(library(p, quietly=TRUE, 
                 character.only=TRUE)) 

Может быть безопаснее выполнять какой-то тест, если вы собираетесь подавлять «загрузочные сообщения».

for(p in pkgs) suppressPackageStartupMessages(stopifnot( 
               library(p, quietly=TRUE, 
                 logical.return=TRUE, 
                 character.only=TRUE))) 
+0

Спасибо, @DWin. Это вызвало проблему с сообщением «Загрузка ...». Но у меня все еще есть такие сообщения, как: «Следующий объект маскируется пакетом: ....» ... Я понимаю последствия не отображения этих сообщений (странное поведение функций, которые были замаскированы и т. Д.), Но я бы как заставить их замолчать ... Мысли? – benilton

+0

Я подозреваю, что на выходе вы показываете, что остальные сообщения связаны с кодом в именованных пакетах, который является 'attach()' -ing безымянных пакетов. То, что я не знаю, но, возможно, @HenrikB знает, можно ли загрузить эти пакеты «вручную», чтобы код attach() «распознавал», что им не нужно быть «attach()» ed. –

+0

Нет необходимости использовать 'suppressPackageStartupMessages()' или 'quietly = TRUE', после того как вы использовали опцию chunk' message = FALSE' и обновили ваши пакеты R. Одно из исключений - некоторые авторы пакетов не используют 'packageStartupMessage()' для записи сообщений о запуске пакета, например. Вместо этого они используют 'cat()'. В этом случае вы все равно можете использовать 'results = 'hide''. Кстати, 'stopifnot()' здесь тоже не нужно, потому что 'library()' будет 'stop()', если пакет не существует. –

0

Я озадачен тем, что вы видите это сообщение для пакетов R. *. Следующее:

suppressPackageStartupMessages(library(aroma.affymetrix))

должен молчать (кроме предупреждения о замаскированных объектах). Если вы попробуете вне knitr, вы все еще видите эти сообщения?

/Henrik (автор Р. * и аромат. * Пакеты)

+0

Я угадываю из вышесказанного, что «doMC» прикрепляет «foreach» и другие пакеты с кодом, который не выполняет ни одного «тихого» запроса, переданного в «doMC». –

+0

Привет @HenrikB, проблема не связана с вашими пакетами в частности.Это происходит для многих других (например, Biobase, Matrix и т. Д.), Но случилось так, что ваши были на вершине. Проблема в том, что я пытаюсь отключить предупреждения на маскированных объектах ... Я даже пробовал необычные: suppressMessages (suppressWarnings (suppressPackageStartupMessages (библиотека (pkg, quietly = TRUE)))) Но предупреждения (по маскированные объекты) по-прежнему отображаются ... – benilton

5

Установка параметра warn.conflicts=FALSE в library() как в

library(dplyr, warn.conflicts=FALSE) 

должен сделать трюк. Это особенно полезно при параллельных вычислениях, когда потенциально сотни или более ядер загружают библиотеку.

+0

Усредняются ли эти настройки по умолчанию на уровне сеанса R? В этом случае параметр может быть добавлен в '.Rprofile' – javadba

Смежные вопросы