我试图压制消息,解释某些功能被其他软件包掩盖了。我尝试过不同的组合,但都没有提供我需要的东西。
我的大块是:
<<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 :(得分:6)
在warn.conflicts=FALSE
中设置参数library()
,如
library(dplyr, warn.conflicts=FALSE)
应该做的伎俩。当可能有数百个或更多内核加载库时,这对并行计算特别有用。
答案 1 :(得分: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)))
答案 2 :(得分:0)
我很困惑你看到了R. *包的那些消息。以下内容:
suppressPackageStartupMessages(library(aroma.affymetrix))
应该是静音的(除了屏蔽对象的警告)。如果你尝试外面的knitr,你还能看到这些消息吗?
/亨里克 (R. *和aroma。*包的作者)
答案 3 :(得分:0)
suppressPackageStartupMessages(library('packageName'))
和library('packageName', quitely = TRUE)
将禁止加载程序包时生成的所有消息,包括“正在加载所需的程序包XYZ”。
该问题提出了一个更为严格的问题,即如何抑制有关冲突的警告,这可以通过library('packageName', warn.conflicts = FALSE)
完成。 R 3.6.0通过conflicts.policy
选项引入了全局解决方案:
options(conflicts.policy = list(warn = FALSE))
library('packageName')
此政策可能会将意外的警告与预期的警告一起隐藏,因此更安全地明确指定预期的冲突并使用options(conflicts.policy = 'strict')
[这是options(conflicts.policy = list(error = TRUE, warn = FALSE))
的缩写)。
可以使用can.mask
的{{1}}参数列出预期的冲突:
library
如果程序包A加载的程序包B掩盖了程序包C中的功能,我们仍然会遇到问题,这似乎是在# 'packageName' may mask any function named 'foo' and 'bar':
library('packageName', can.mask = c('foo', 'bar'))
# 'packageName' may mask any function in the package 'base':
library('packageName', can.mask = list(base = TRUE))
# 'packageName' may mask only the 'base' functions 'foo' and 'bar':
library('packageName', can.mask = list(base = c('foo', 'bar')))
装载了doMC
的程序包时掩盖了。我们可以通过为每个要加载的软件包设置“冲突规则”来解决此问题:
R.oo
可以在methods::getClasses
文件中指定冲突规则选项,以保存每次加载脚本时显式调用它们的条件。
通过卢克·蒂尔尼(Luke Tierney)的"Managing Search Path Conflicts"获得更多详情。