【问题标题】:How to prevent modeest from printing a startup message whether loaded or not?如何防止modeest打印启动消息,无论是否加载?
【发布时间】:2017-07-30 16:34:25
【问题描述】:

当我运行 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

【问题讨论】:

标签: r


【解决方案1】:

正确;该行为是由于在错误的包挂钩中调用了packageStartupMessage

这是一个错误。 I’ve submitted a pull request 修复错误。

很遗憾,没有进行此修复,因此无法采取任何措施来避免这种情况。 — 一件事是在通过assignInNamespace 加载任何其他包之前对base::packageStartupMessage 进行热补丁。不过,这确实应该是最后的手段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2013-05-12
    • 2011-11-28
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多