R 中的消息函数不写入文本文件/将消息打印到标准输出

Message function in R not writing to text file / print message to stdout

我正在使用 print(), cat() and message() 函数向 R 控制台写入一些文本。我希望将控制台输出收集到一个文本文件中,所以我将代码夹在一对 sink() 函数之间。最终代码如下:

sink("output_filename.txt") 
print("some text with print function")
cat("some text with cat function")
message("some text with message function")
sink()

当我 运行 此代码时,打印和 cat 按预期工作,而 message's output writes to console 而不是输出文本文件。为什么会发生这种情况,我该如何解决?我不想用替代品替换消息功能。

就像评论中已经提到的 jogomessage() 发送到 stdeer,而不是 stdout。您可以使用 sink(stdout(), type = "message")

更改此设置
sink("output_filename.txt") 
sink(stdout(), type = "message")
print("some text with print function")
cat("some text with cat function\n")
message("some text with message function")
sink()

来自 sink()documentary

Normal R output (to connection stdout) is diverted by the default type = "output". Only prompts and (most) messages continue to appear on the console. Messages sent to stderr() (including those from message, warning and stop) can be diverted by sink(type = "message") (see below).

您也可以在完成后将其更改回来,因为警告和停止也以这种方式更改为 stdout