我在下面运行的代码示例。
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))
已加载库栅格。
集群中加载的库栅格。
您可以将library()
呼叫包装在suppressPackageStartupMessages
中。
suppressPackageStartupMessages(library(snowfall))
suppressPackageStartupMessages(library(snow))
使用源。
[如果您查看sfLibrary
的源代码,特别是在prints those messages的位置,则会看到它是在使用sfCat
。向下追踪(same file),它使用cat
。
我知道两种防止cat
转储到控制台的方法:capture.output
和sink
。
capture.output
:“计算其参数,输出作为字符串返回或发送到文件”。
capture.output
由于cat("quux4\n")
# quux4
invisible(capture.output(cat("quux5\n")))
cat("quux6\n")
# quux6
返回捕获的输出可见作为capture.output
向量,将其包装在character
中或将返回值存储到变量中(被忽略和/或删除)将阻止其输出在控制台。
invisible
:“将R输出发送到文件”。
sink
我个人发现sink
的使用(通常)存在一些风险,特别是在自动化方面。一个很好的例子是cat("quux1\n")
# quux1
sink("ignore_me.txt")
cat("quux2\n")
sink(NULL) # remove the sink
cat("quux3\n")
# quux3
在捕获代码块的输出时使用sink
。 knitr
的嵌套调用有问题。机敏的读者会注意到sink
sink
,因此在这方面都不是更好。
[我建议您可以使用capture.output
或编写一些辅助功能来帮助您。