我正在使用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()控制台输出中的提示中设置时间戳?
感谢您的帮助......
答案 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)