R语言 - 为控制台输出添加时间戳

时间:2014-01-02 16:51:17

标签: r logging timestamp sink

我正在使用sink()进行日志记录,以便运行R-Scripts,效果很好。

*的 R>接收器(file = paste(Log_Path,FileName),append = TRUE,type = c(“output”),split = TRUE)*

我现在正在进行性能测试,需要查看R-Script的某些部分运行多长时间,而不添加大量的打印语句。

此解决方案适用于RGui界面:

R> updatePrompt< - function(...){options(prompt = paste(Sys.time(),“>”));返回(TRUE)}

R> addTaskCallback(updatePrompt)

但是,在R-Server中运行时,时间提示不会传播回sink()的控制台流。

建议?

我已经探索过txtStart,但不确定这是否是我需要的。 是否有不同的包或选项设置为在sink()控制台输出中的提示中设置时间戳?

感谢您的帮助......

2 个答案:

答案 0 :(得分:1)

提示不属于stdout的一部分,这就是为什么它不会进入接收器的原因。你为什么不打印回调?例如:

make_timing_fun <- function() {
  time.start <- proc.time()
  function(...) {
    new.time <- proc.time()
    print(new.time - time.start)
    time.start <<- new.time
    TRUE
  }
}
addTaskCallback(make_timing_fun()) # note parens used to generate actual function

注意这段时间是完成语句之间的时间,所以如果你只是在控制台等待,那么也不会做任何事情。

答案 1 :(得分:-1)

我原本尝试过,但我又试过了。并得到了相同的结果:

日志文件中保存的控制台输出的摘录:

&GT; startdate&lt; - as.vector(input_data2)

&GT; input_data3&lt; - stop_date

&GT; stopdate&lt; - as.vector(input_data3)

希望如此:

2014-01-03 09:07:57&gt; startdate&lt; - as.vector(input_data2)

2014-01-03 09:07:57&gt; input_data3&lt; - stop_date

2014-01-03 09:07:57&gt; stopdate&lt; - as.vector(input_data3)