【问题标题】:Suppress loading messages when calling function directly (not loading package in full)直接调用函数时禁止加载消息(不完全加载包)
【发布时间】:2019-04-28 11:02:17
【问题描述】:

我想抑制加载消息,就像在this post 中一样,除了我不是加载整个包而是直接调用一个函数。

例如调用raster函数如下:

f <- system.file("external/test.grd", package="raster")
r <- raster::raster(f)
p <- raster::rasterToPolygons(r, dissolve = TRUE)

消息中的结果:

Loading required namespace: rgeos

如何防止出现此消息?到目前为止我发现的唯一解决方案是按如下方式加载rgeos

suppressPackageStartupMessages(library(rgeos))

但由于我在包中使用函数 raster::rasterToPolygons,我真的不想完整加载 rgeos

【问题讨论】:

  • 你试过p &lt;- suppressWarnings(raster::rasterToPolygons(r, dissolve = TRUE))吗?
  • 如果该功能需要包,则整个包都将被加载。你在写自己的包吗?您是否尝试将 rgeos 列为依赖项?
  • 是的,我已将 rgeos 列为软件包的依赖项并尝试了 suppressMessages 但似乎没有帮助。不过,在 NAMESPACE 中完整导入 rgeos 可以解决问题。使用一个功能似乎过分了,但我想它会做的!
  • 对不起,我很昏暗:suppressWarnings(raster::rasterToPolygons(r, dissolve = TRUE)) 不起作用(这不是警告消息),但 suppressMessages(raster::rasterToPolygons(r, dissolve = TRUE)) 确实 起作用(不导入 rgeos进入命名空间)。我可以发誓我已经试过了!那好吧。将添加为答案。

标签: r


【解决方案1】:

以为我以前尝试过,但显然没有。这两个选项都有效:

p <- suppressMessages(raster::rasterToPolygons(r, dissolve = TRUE))
p <- suppressPackageStartupMessages(raster::rasterToPolygons(r, dissolve = TRUE))

我使用:: 显式调用该函数(由Hadley here 建议),但您也可以通过将rgeos 导入包的NAMESPACE 来避免加载消息。如果使用roxygen2,这意味着在函数顶部添加@import rgeos 作为roxygen2 注释。我想@importFrom rgeos fun 也可以,但我不知道raster::rasterToPolygons 正在使用哪些rgeos 函数。

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多