我在 R 中编写了一个函数来将任何消息打印到日志文件和控制台。但是如果在运行代码时出现任何意外错误,那么错误只会显示到控制台。有没有办法将错误消息同时写入控制台和日志文件?这里是功能..
log_con <- file("Text1.txt", open="a")
loggerfn<-function(Message,LogConnection=log_con){
cat(Message, file = LogConnection)
cat(Message)
}
Run Code Online (Sandbox Code Playgroud)
这是示例代码,用于...
for (i in 1:10)
{
loggerfn("loop begins\n",log_con)
a <- rnorm(n = 100, mean = i, sd = 5)
loggerfn(mean(a),log_con)
loggerfn("loop Completed\n",log_con)
if(i==8){
sdfs
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我通过提供未定义的对象 sdfd 故意引入了错误。下面提供的错误消息仅显示在控制台中,有没有办法将错误消息同时写入控制台和日志文件?
Error: object 'sdfs' not found
Run Code Online (Sandbox Code Playgroud)
使用 sink() 将消息和警告转移到文件中。诀窍是设置参数 type="message"
在命令行下运行 R 脚本时,请参考 http://www.statmethods.net/interface/io.html 和输出错误/警告日志(txt 文件) https://stat.ethz.ch/R-manual/R-devel /library/base/html/sink.html
该sink( )
函数定义了输出的方向。
描述
sink 将 R 输出转移到一个连接(并停止这种转移)。
sink.number()
Run Code Online (Sandbox Code Playgroud)
报告使用了多少分流。
sink.number(type = "message")
报告当前用于错误消息的连接数。用法
sink(file = NULL, append = FALSE, type = c("output", "message"),
split = FALSE)
sink.number(type = c("output", "message"))
Run Code Online (Sandbox Code Playgroud)
直接输出到文件
sink("myfile", append=FALSE, split=FALSE)
Run Code Online (Sandbox Code Playgroud)
将输出返回到终端
sink()
Run Code Online (Sandbox Code Playgroud)
append 选项控制输出是覆盖还是添加到文件中。split 选项确定输出是否也发送到屏幕以及输出文件。
以下是 sink() 函数的一些示例。
输出定向到 c:\projects 目录中的 output.txt。输出覆盖现有文件。没有输出到终端。
sink("c:/projects/output.txt")
Run Code Online (Sandbox Code Playgroud)
输出定向到 cwd 中的 myfile.txt。输出附加到现有文件。输出也发送到终端。
sink("myfile.txt", append=TRUE, split=TRUE)
Run Code Online (Sandbox Code Playgroud)
重定向输出时,使用 cat() 函数对输出进行注释。
归档时间: |
|
查看次数: |
4496 次 |
最近记录: |