Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 防止在包端加载消息_R_Package_Suppress Warnings_Roxygen2 - Fatal编程技术网

R 防止在包端加载消息

R 防止在包端加载消息,r,package,suppress-warnings,roxygen2,R,Package,Suppress Warnings,Roxygen2,我已经将我经常使用的一些功能与roxygen2放在一个软件包中,一切都很顺利。唯一困扰我的是,在加载包时,我会从所有加载的依赖项中得到一堆文本,并打印到控制台中。我知道当我使用suppressWarnings(suppressMessages(library(“PACKAGE”)))时可以禁用警告,但我想知道是否也可以直接在包中设置此选项(可能在命名空间中)?这样做的目的是抑制来自依赖项的警告,并且我可以指定在加载包时显示的我自己的文本 我尝试了@NelsonGon的建议,并将其添加到名为zzz

我已经将我经常使用的一些功能与roxygen2放在一个软件包中,一切都很顺利。唯一困扰我的是,在加载包时,我会从所有加载的依赖项中得到一堆文本,并打印到控制台中。我知道当我使用
suppressWarnings(suppressMessages(library(“PACKAGE”)))
时可以禁用警告,但我想知道是否也可以直接在包中设置此选项(可能在命名空间中)?这样做的目的是抑制来自依赖项的警告,并且我可以指定在加载包时显示的我自己的文本

我尝试了@NelsonGon的建议,并将其添加到名为
zzz.R
的文件中。额外的欢迎文本按原样打印,但来自从属关系的加载消息仍然打印

# Welcome message
.onLoad <- function(...){

  invisible(suppressPackageStartupMessages(
    sapply(c("stringi", "stringr",
             "qdapRegex", "readr",
             "tokenizers", "rvest",
             "pryr", "XML", "xml2",
             "lubridate", "data.table",
             "ggplot2", "anytime", "dplyr",
             "network", "quanteda", "ggmap",
             "networkDynamic", "mgsub",
             "dplyr", "ggplot2", "network",
             "stats", "ndtv", "devtools",
             "ggtext"),
           requireNamespace, quietly = TRUE)))

  pkg_info <- "Welcome to my package"
  packageStartupMessage(pkg_info)

}
欢迎留言
.onLoad在引擎盖下,包裹装载呼叫:
pkgload::load_取决于调用的
require
有一个
默认值=FALSE
选项

您只需将此选项设置为
TRUE
即可避免消息:

# Welcome message
.onLoad <- function(...){
 quietly <- getOption('quietly')
 options(quietly = T)
 pkg_info <- "Welcome to my package"
 packageStartupMessage(pkg_info)
 options(quietly = quietly)
}

@NelsonGon这就是我想要做的,但我使用roxygen2来构建包,所以我不确定我必须将建议的更改放在哪里,我从未明确使用
devtools::load_all
onLoad
。你知道当使用roxygen2构建包时,我可以在哪里编辑这些吗?将
.onLoad
放在
zzz.R
中。你可以在我的电脑上看到一个例子
load_all
(只需要在构建时测试更改)与此无关。只需将
suppress-packagestartpmessages
复制到
。onLoad
zzz.R
。我可以确认它不起作用。您是否在使用
描述文件的
依赖项
字段?通常使用
Imports
字段,并且没有启动消息。这可能是本地使用的包?如果我是最终用户,我肯定想知道26个相当大的软件包正在加载并添加到我的搜索路径中。即使是本地使用,我也会按照@StéphaneLaurent的建议,将包放入
Imports
中,而不是
dependens
,使用名称空间限定符引用代码中导入的函数。我尝试了这一点,但在加载包时,控制台仍会打印相同的消息。您收到的消息完全相同吗,或者其中一些消失了?我用数据尝试了这个。表和输出是干净的。我的坏,我忘了保存函数!只是尝试了一次,我得到的信息明显减少!我仍然得到的唯一的警告是,有两个S3方法被覆盖。这似乎是你的代码和斯蒂芬·洛朗的建议的结合,成功了!
> devtools::load_all(".")
Loading myPackage
Welcome to my package