如何防止最大模式打印启动消息,无论是否加载



当我运行r时(即使是无头rscript加载零库),我偶尔会看到

This is package 'modeest' written by P. PONCET.
For a complete list of functions, use 'library(help = "modeest")' or 'help.start()'.

这是我的日志文件的污染输出。虽然我发现它对几件事有用,但我很少加载它。在这种情况下,我如何防止它发出消息?我知道我是否真的加载了库,我可以suppressPackageStartupMessages,但是即使没有加载任何软件包,此消息也会出现。

可能是我每次看到这个函数时都在调用一个函数,该函数是一个包含对modeest(至少在雏菊链中的某个地方)的软件包的依赖性的软件包的一部分,即使我不要使用library(...)

复制的步骤:

  1. 安装模式最佳软件包
  2. 编写一个包含一个函数的软件包,该函数从Modeest导入函数
  3. 在步骤2中提到的软件包中编写另一个包装的函数,该函数取决于无关的(到模式)函数
  4. 使用package::func(arg)library(package); func(arg)从步骤3中调用一个不取决于modeest的函数。

正确;该行为是由packageStartupMessage在错误的软件包挂钩中调用的事实引起的。

这是一个错误。我已经提交了拉动请求以修复错误。

不幸的是,此修复程序没有太多要避免这种情况。 - 一件事是在通过assignInNamespace加载任何其他软件包之前,将HotPatch base::packageStartupMessage

,这确实应该是最后的手段。

最新更新