我正在尝试捕获 R 脚本的完整控制台日志。我想要所有事情按时间顺序排列,并在发生时打印警告。我试过这个:
options(warn = 1)
tmpSinkfileName <- tempfile()
sink(tmpSinkfileName, split = TRUE)
cat("Doing something\n")
warning("Hi here")
cat("Doing something else\n")
warning("Hi there")
sink()
console.out <- readChar(tmpSinkfileName, file.info(tmpSinkfileName)$size)
unlink(tmpSinkfileName)
cat(console.out)
# Doing something
# Doing something else
warnings()
# NULL
但不幸的是,警告丢失了console.out
。我怎样才能做到这一点?根据文档,options(warn = 1)
应在警告发生时打印警告。不幸的是,他们没有被俘虏sink()
.
几乎明白了,但它非常复杂,而且非常烦人的是,与标准输出不同,消息输出无法拆分,即重定向到文件并同时保留在输出中(UNIX tee 行为)!
options(warn = 1)
tmpSinkfileName <- tempfile()
tmpFD <- file(tmpSinkfileName, open = "wt")
sink(tmpFD, split = TRUE)
sink(tmpFD, type = "message")
cat("Doing something\n")
warning("Hi here")
cat("Doing something else\n")
warning("Hi there")
sink(type = "message")
sink()
console.out <- readChar(tmpSinkfileName, file.info(tmpSinkfileName)$size)
unlink(tmpSinkfileName)
cat(console.out)
If I try
sink(tmpFD, type = "message", split = TRUE)
it says
接收器错误(tmpFD,type =“message”,split = TRUE):无法拆分
消息连接
这很烦人!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)