【发布时间】: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.如果你想加载一个包,为什么不使用require或library? -
(.packages())调用返回全局环境中加载的所有包。这些包应由foreach为每个分配的核心再次显式加载,以避免在使用.packages参数的函数调用期间出现问题。因此,没有直接的library()call。包因功能用途而异,并且不固定,因此需要交互加载。