在R命令行中显示时钟

时间:2010-11-19 05:58:05

标签: r time clock

我想知道是否有办法在R命令行中显示当前时间,就像在MS DOS中一样,我们可以使用

Prompt $T $P$G

在每个提示行中包含时钟。 像

这样的东西
options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))

将会这样做,但是它会在设置时修复。我不确定如何让它自动更新。

5 个答案:

答案 0 :(得分:47)

Chase以正确的方式指出,options("prompt"=...)可用于此目的。但是他的解决方案增加了一个常量时间表达式,这不是我们想要的。

函数taskCallbackManager的文档包含其余部分:

R> h <- taskCallbackManager()
R> h$add(function(expr, value, ok, visible) { 
+     options("prompt"=format(Sys.time(), "%H:%M:%S> ")); 
+             return(TRUE) }, 
+     name = "simpleHandler")
[1] "simpleHandler"
07:25:42> a <- 2
07:25:48>

我们注册一个在每个命令完成后得到评估的回调。这就是诀窍。来自R开发者网站的更多精彩文档是in this document

答案 1 :(得分:17)

以下是另一种回调解决方案:

updatePrompt <- function(...) {options(prompt=paste(Sys.time(),"> ")); return(TRUE)}
addTaskCallback(updatePrompt)

这与Dirk的方法相同,但语法对我来说有点简单。

答案 2 :(得分:17)

除非执行顶级命令,否则基于回调的其他任何方法都不会更新提示符。因此,在控制台中按回车不会产生更改。这就是R标准回调处理的本质。

如果您安装了tcltk2软件包,则可以设置一个更改option()的任务计划程序,如下所示:

library(tcltk2)
tclTaskSchedule(1000, {options(prompt=paste(Sys.time(),"> "))}, id = "ticktock", redo = TRUE)

Voila,类似于MS DOS提示符。

注意:灵感来自this answer


注1:等待时间(本例中为1000)是指毫秒数,而不是秒数。当亚秒级分辨率在某种程度上有用时,您可以向下调整它。

答案 3 :(得分:2)

您可以更改通过options()命令显示的默认字符。你可能想尝试这样的事情:

options(prompt = paste(Sys.time(), ">"))

查看?options的帮助页面,查看可以设置的完整列表。了解它是一件非常有用的事情!

假设您希望为每个R会话执行此操作,请考虑将其移至.Rprofile。在该主题上可以找到其他几个编程幸福的好块{/ 3}}。

答案 4 :(得分:0)

我不知道用于执行此操作的本机R函数,但我知道R具有与具有系统时间命令的其他语言的接口。也许这是一个选择?

Thierry提到了system.time(),并且还有proc.time()取决于您的需要,尽管这些都不会给您当前的时间。