gpt4 book ai didi

R sink() 消息并输出到同一文件 - 完整性检查

转载 作者:行者123 更新时间:2023-12-03 07:42:57 27 4
gpt4 key购买 nike

我正在使用 R 的 sink() 函数将错误、警告、消息和控制台输出捕获到单个文本文件中。

我想知道是否同时沉没两个 留言 输出 类型到单个打开的文件是不好的吗?

我将上述所有内容捕获到一个文件中,但我必须打开一个文件句柄以允许捕获两种接收器类型。以下代码说明了使用文件句柄方法:

message_filename = 'script_messages.txt'
try(message_file <- file(message_filename, open="at")) # open file for appending in text mode
sink(message_file, type="message")
sink(message_file, type="output")

cat("\n\n")
message(format(Sys.time(), "%a %b %d %Y %X TZ(%z)"), appendLF = TRUE)
# next line produces messages since file doesn't exist
try(source("import_file.R"), silent = TRUE)

# Save and close writing errors, warnings, messages, and console output to a file
sink(type="output")
sink(type="message")
close(message_file)

如果我不打开文件句柄,则接收器“输出”类型的消息是文本文件中唯一捕获的消息。

sink {base} 的文档在细节部分的前半部分有一些关键信息,但我不够流利,无法确定我是否正确实现了它。

最佳答案

我相信这与警告的全局选项有关。默认为 warn=0这意味着 "warnings are stored until the top–level function returns" .换句话说,当您source("script.R") , R 存储警告并在您的脚本完成后打印它们,即在您运行后 sink(type="output"); sink(type="message"); close(message_file) .
要更改此设置,您可以调用 options(warn=1)在您获取脚本之前,这将在警告发生时打印警告,因此会被您的接收器捕获。每个 session 只需要运行一次。

关于R sink() 消息并输出到同一文件 - 完整性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59120777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com