R 中的错​​误处理和记录

Error Handling and logging in R

我在 R 中编写了一个函数来将任何消息打印到日志文件和控制台。但是,如果在 运行 代码期间出现任何意外错误,则错误只会显示到控制台。有没有办法将错误消息写入控制台和日志文件?这是函数..

log_con <- file("Text1.txt", open="a")

loggerfn<-function(Message,LogConnection=log_con){
  cat(Message, file = LogConnection)
  cat(Message)
}

这里是示例代码...

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
   }
 }

在上面的代码中,我通过提供未定义的对象故意引入错误 sdfd.Below 如果错误消息仅显示在控制台中,是否有任何方法可以将错误消息写入控制台和日志文件?

Error: object 'sdfs' not found

使用 sink() 将消息和警告转移到文件中。诀窍是设置参数 type="message"

参考http://www.statmethods.net/interface/io.htmlOutput error/warning log (txt file) when running R script under command line https://stat.ethz.ch/R-manual/R-devel/library/base/html/sink.html

sink( )函数定义输出方向。

描述

sink 将 R 输出转移到一个连接(并停止这种转移)。

sink.number()

报告有多少转移正在使用。

sink.number(type = "message") 报告当前用于错误消息的连接数。 用法

sink(file = NULL, append = FALSE, type = c("output", "message"),
     split = FALSE)

sink.number(type = c("output", "message"))

直接输出到文件

sink("myfile", append=FALSE, split=FALSE)

return输出到终端

sink()

追加选项控制输出是覆盖还是添加到文件。拆分选项确定输出是否也发送到屏幕以及输出文件。

这里有一些 sink() 函数的例子。

输出定向到 c:\projects 目录中的 output.txt。 输出覆盖现有文件。没有输出到终端。

sink("c:/projects/output.txt")

输出指向 cwd 中的 myfile.txt。附加输出 到现有文件。输出也发送到终端。

sink("myfile.txt", append=TRUE, split=TRUE)

重定向输出时,使用 cat( ) 函数来注释输出。