【发布时间】:2020-06-29 13:35:27
【问题描述】:
我已经将一些我经常使用的功能与 roxygen2 放在一个包中,并且一切运行顺利。唯一困扰我的是,在加载包时,我会从所有加载的依赖项中得到一堵文本墙,打印到控制台中。我知道当我使用suppressWarnings(suppressMessages(library("PACKAGE"))) 时可以抑制警告,但我想知道我是否也可以直接在包中设置此选项(可能在 NAMESPACE 中)?这个想法是抑制来自依赖项的警告,我可以指定我自己的文本,在加载包时显示。
我尝试了@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)
}
【问题讨论】:
-
@NelsonGon 这是我想做的,但我使用 roxygen2 来构建包,所以我不确定我必须在哪里放置建议的更改,我从未明确使用过
devtools::load_all或onLoad。当使用 roxygen2 构建包时,你知道我可以在哪里编辑这些吗? -
将
.onLoad放入zzz.R。你可以在我的repo 上看到一个例子。load_all(只需要在构建时测试更改)是无关紧要的。只需按照此处所述输入suppressPackageStartupMessages,即只需将.onLoad复制到zzz.R。 -
我可以确认它不起作用。
-
您是否在使用
DESCRIPTION文件的Depends字段?通常使用Imports字段,并且没有启动消息。 -
想必这是本地使用的包吧?如果我是最终用户,我当然想知道有 26 个相当大的包正在加载并添加到我的搜索路径中。即使它是供本地使用的,我也会按照@StéphaneLaurent 的建议将包放在
Imports而不是Depends中,使用命名空间限定符来引用我代码中的导入函数。
标签: r package suppress-warnings roxygen2