R中的消息功能未写入文本文件/未将消息打印到标准输出

时间:2019-06-15 05:27:48

标签: r console sink

我正在使用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()

运行此代码时,在message's output writes to console期间按预期方式进行打印和分类,并且不输出文本文件。为什么会发生这种情况,我该如何解决?我宁愿不要用替代项替换消息功能。

1 个答案:

答案 0 :(得分:1)

就像注释中已经提到的jogo一样,message()发送到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()的{​​{3}}:

  

正常R输出(至连接标准输出)被默认类型转移   =“输出”。仅提示和(大多数)消息继续出现在控制台上。发送到stderr()的消息(包括来自message,   警告和停止)可以通过接收器(类型=“消息”)转移(请参阅   下面)。

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