调用 sink() 后没有出现 R 输出

标签 r rstudio

我有一组复杂的 R 脚本,并决定通过 message() 调用所有与调试相关的消息。 .我试图找到一种方法来抑制所有消息,并偶然发现了这个 SO post ,建议我尝试使用 sink() .所以我将以下代码行插入到我的脚本中,并设置我的 config$debug_mode <- FALSE :

if (!config$debug_mode){
  messages <- file("messages.Rout", open = "wt")
  sink(messages, type = "message")
}

其他 SO 帖子和 R 文档说只需调用 sink()sink(file=NULL)停止以前的转移,但这对我不起作用。即使在调用 sink() 之后,我没有看到我的 message() 的 R Studio 控制台输出来电。另外,sink.number()返回 0 ,这似乎表明没有转移。那么,为什么我不再在 R Studio 控制台中看到输出?

最佳答案

当您最初表明您只想接收消息时,运行 sink()不会关闭该行为。相反,请使用 sink(type="message") ,这就是你想要的。

> config <- list()
> config$debug_mode <- FALSE
> if (!config$debug_mode){
+   messages <- file("messages.Rout", open = "wt")
+   sink(messages, type = "message")
+ }
> message("trial")
> sink(type="message")
> message("trial")
trial

这很可能是 ?sink 的“警告”部分中(间接地)引用的内容。帮助文件,其中包括以下说明:

Do not sink the messages stream unless you understand the source code implementing it and hence the pitfalls.

关于调用 sink() 后没有出现 R 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45948882/

相关文章:

r - Shiny 仪表板中的选项卡相关侧边栏

r - 使用aws.s3 R包下载json文件

r - 如何解决 R 中的 "no package called ' .GlobalEnv'"错误?

r - Rmarkdown-运行代码并在文档中显示错误

r - 如何在R中保留其他列的同时聚合一些列?

R:每次将一个矩阵中的一行与另一个矩阵中的所有行组合矩阵

R:关于优化的问题 - 优化中的函数值无效

rstudio - 在转换为 PDF 时,如何让 RMarkdown 识别 fontsize 和 maifont?

r - 当我在另一台设备上打开我的 .R 文件时如何保持折叠函数折叠。工作室

r - 对于包含 S4 类的包,推荐的包构建工作流是什么?