foreach(R):禁止从全局环境

时间:2016-08-28 08:59:20

标签: r foreach packages

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

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

我在泛型函数中使用foreach调用,因此它需要适应用户先验加载的任何包。 我可以在foreach调用中使用apply调用,并在全局环境中加载所有包,但我认为foreach需要在.packages参数中加载它?

如果有更好的方法如何做到这一点,请告诉我。

2 个答案:

答案 0 :(得分:0)

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

作为一种解决方法,我正如所描述的那样使节点静默,但使用progress bar为用户提供至少一些信息,尽管未经过详细说明。

答案 1 :(得分:0)

这也是一个la脚的答案,更多的解决方法。如果您的函数在单独的R脚本中而不是使用.packages(),则可以执行以下操作:

    options( warn = FALSE )
    suppressPackageStartupMessages( library(dplyr) )
    options( warn = FALSE )
调用库时,在函数文件内

。这将关闭软件包的警告,然后再将其重新打开。如果有这个选择,那就太好了。