在R命令行中显示一个时钟
我不知道是否有一种方法来显示R命令行中的当前时间,就像在MS DOS中一样,我们可以使用
Prompt $T $P$G
在每条提示行中包含时钟。 就像是
options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))
会做到这一点,但它是固定在它被设置的时间。 我不知道如何自动更新。
Chase指出正确的方法,因为可以使用options("prompt"=...)
。 但他的解决scheme增加了一个恒定的时间expression,这不是我们想要的。
其余的部分是函数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>
我们注册一个callback,每个命令完成后得到评估。 这就是诀窍。 R开发者网站的这个文档中有更多的花哨的文档。
这是一个替代callback解决scheme:
updatePrompt <- function(...) {options(prompt=paste(Sys.time(),"> ")); return(TRUE)} addTaskCallback(updatePrompt)
这和Dirk的方法一样,但是语法对我来说更简单一些。
除非执行顶层命令, 否则基于callback的其他方法都不会更新提示。 所以,在控制台中按回车不会产生变化。 这是R的标准callback处理的本质。
如果您安装了tcltk2
软件包,则可以设置一个任务计划程序来更改option()
,如下所示:
library(tcltk2) tclTaskSchedule(1000, {options(prompt=paste(Sys.time(),"> "))}, id = "ticktock", redo = TRUE)
瞧,就像MS DOS提示符一样。
注意:灵感来自这个答案 。
注1:等待时间(在这种情况下是1000)是指毫秒数,而不是秒数。 当亚秒分辨率有用时,可以向下调整它。
您可以更改通过options()
命令显示的默认字符。 你可能想尝试这样的事情:
options(prompt = paste(Sys.time(), ">"))
查看“ ?options
的帮助页面,查看可以设置的完整列表。 了解这是一个非常有用的事情!
假设这是你想要为每个R会议做的事情,考虑把它移到你的.Rprofile
。 其他几个编程幸福的好东西也可以在这个话题上find。
我不知道这样做的本地R函数,但我知道R与其他有系统时间命令的语言接口。 也许这是一个select?
Thierry提到system.time()
,还有proc.time()
这取决于你需要什么,虽然这些都不会给你当前的时间。