【问题标题】:foreach (R): suppress Messages from packages loaded from global environmentforeach (R):抑制从全局环境加载的包中的消息
【发布时间】:2017-01-04 12:00:20
【问题描述】:

我正在使用 .packages = (.packages()) 在我的 foreach 调用中加载在全局环境中加载的几个包。但是,我找不到如何抑制包启动消息。由于它们是为每个分配的核心加载的,因此此列表会变得相当长。 我已经尝试将标准调用(如suppressMessages() 等)包裹在函数调用和.packages 参数周围,但没有成功。

foreach(i = x, .packages = (.packages()))

我在通用函数中使用 foreach 调用,因此它需要适应用户预先加载的任何包。 我可以在 foreach 调用中使用 apply 调用,所有包都加载到全局环境中,但我假设 foreach 需要在其 .packages 参数中加载它?

如果总体上有更好的方法可以做到这一点,请告诉我。

【问题讨论】:

  • 为什么this 没有帮助?
  • 我假设它是因为我在这里没有直接调用library(),但包是用.packages 参数加载的。
  • 在 .packages 的文档中他们写了.packages returns information about package availability. 如果你想加载一个包,为什么不使用requirelibrary
  • (.packages()) 调用返回全局环境中加载的所有包。这些包应由foreach 为每个分配的核心再次显式加载,以避免在使用.packages 参数的函数调用期间出现问题。因此,没有直接的library()call。包因功能用途而异,并且不固定,因此需要交互加载。

标签: r foreach packages


【解决方案1】:

这也是一个蹩脚的答案,更多的是一种解决方法。如果你的函数在一个单独的 R 脚本中而不是使用 .packages() 你这样做:

    options( warn = FALSE )
    suppressPackageStartupMessages( library(dplyr) )
    options( warn = FALSE )

调用库时在函数文件中。这将关闭您的包裹的警告并在之后重新打开它们。如果有一个选项,那就太好了。

【讨论】:

    【解决方案2】:

    我有一个蹩脚的半答案:当您创建集群时,您可以指定 outfile = '/dev/null' 以使工作节点的所有输出静音。问题是,这会阻止您从节点打印任何其他内容...

    作为一种解决方法,我按照所述将节点静音,但使用progress bar 至少向用户提供一些信息,尽管不详细。

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2017-07-06
      • 1970-01-01
      • 2018-03-22
      • 2017-12-30
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多