在将库加载到带有sfLibrary的降雪群集时,抑制启动消息

问题描述 投票:0回答:2

我在下面运行的代码示例。

library(snowfall)
library(snow)

sfInit(parallel = TRUE, cpus = 3)

sfLibrary(raster)
Library raster loaded.
Library raster loaded in cluster.

我想停止sfLibrary打印消息。我不知道怎么办。请帮助...

谢谢。

编辑1:这不起作用:

suppressMessages(sfLibrary(raster))

已加载库栅格。

编辑2:这不起作用:

suppressPackageStartupMessages(sfLibrary(raster))

已加载库栅格。

集群中加载的库栅格。

r raster snow snowfall
2个回答
0
投票

您可以将library()呼叫包装在suppressPackageStartupMessages中。

suppressPackageStartupMessages(library(snowfall))
suppressPackageStartupMessages(library(snow))

0
投票

使用源。

[如果您查看sfLibrary的源代码,特别是在prints those messages的位置,则会看到它是在使用sfCat。向下追踪(same file),它使用cat

我知道两种防止cat转储到控制台的方法:capture.outputsink

  1. capture.output“计算其参数,输出作为字符串返回或发送到文件”

    capture.output

    由于cat("quux4\n") # quux4 invisible(capture.output(cat("quux5\n"))) cat("quux6\n") # quux6 返回捕获的输出可见作为capture.output向量,将其包装在character中或将返回值存储到变量中(被忽略和/或删除)将阻止其输出在控制台。

  2. invisible“将R输出发送到文件”

    sink

我个人发现sink的使用(通常)存在一些风险,特别是在自动化方面。一个很好的例子是cat("quux1\n") # quux1 sink("ignore_me.txt") cat("quux2\n") sink(NULL) # remove the sink cat("quux3\n") # quux3 在捕获代码块的输出时使用sinkknitr的嵌套调用有问题。机敏的读者会注意到sink sink,因此在这方面都不是更好。

[我建议您可以使用capture.output或编写一些辅助功能来帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.