我想知道是否有一种方法可以在R命令行中显示当前时间,就像在MS DOS中我们可以使用
Prompt $T $P$G
将时间时钟包含在每个提示行中。类似这样:
options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))
我会翻译它,但是那样它就被固定在设置的时间了。我不确定如何使其自动更新。
我想知道是否有一种方法可以在R命令行中显示当前时间,就像在MS DOS中我们可以使用
Prompt $T $P$G
将时间时钟包含在每个提示行中。类似这样:
options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))
我会翻译它,但是那样它就被固定在设置的时间了。我不确定如何使其自动更新。
使用 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开发者网站。其他基于回调的方法都不会更新提示,除非执行顶级命令。 因此,在控制台中按回车键不会创建更改。 这就是R标准回调处理的性质。
如果安装了tcltk2
包,则可以设置一个任务计划程序,将option()
更改如下:
library(tcltk2)
tclTaskSchedule(1000, {options(prompt=paste(Sys.time(),"> "))}, id = "ticktock", redo = TRUE)
嘿,这就像 MS DOS 提示符一样。
NB:灵感来自于这个答案。
以下是另一种回调解决方案:
updatePrompt <- function(...) {options(prompt=paste(Sys.time(),"> ")); return(TRUE)}
addTaskCallback(updatePrompt)
这和 Dirk 的方法一样,但语法对我来说更简单。
tcltk2
包的解决方案。 - Iteratoroptions()
命令更改默认显示的字符。你可以尝试像这样的操作:options(prompt = paste(Sys.time(), ">"))
查看帮助页面?options
,可以获得完整的设置列表。这是非常有用的知识!
如果您想为每个R会话执行此操作,请考虑将其移动到.Rprofile
中。在这个主题上,还可以找到其他好的编程技巧。
options("prompt"=...)
的常量时间表达式。您需要一个回调函数,就像我在我的答案中所示。 - Dirk Eddelbuettel我不知道是否有原生的R函数可以做到这一点,但我知道R与其他有系统时间命令的语言接口。也许这是一个选择?
Thierry提到了system.time()
,还有proc.time()
,具体取决于您需要它做什么,尽管这两个命令都不能给出当前时间。