Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display a time clock in the R command line

Tags:

time

r

clock

I wonder if there is a way to display the current time in the R command line, like in MS DOS, we can use

Prompt $T $P$G 

to include the time clock in every prompt line. Something like

options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> ")) 

will do it, but then it is fixed at the time it was set. I'm not sure how to make it update automatically.

like image 423
Shu Avatar asked Nov 19 '10 05:11

Shu


People also ask

How do I display a clock in Linux?

To display current date and time under Linux operating system using command prompt use the date command or timedatectl command. These commands can also display the current time / date in the given FORMAT. We can set the system date and time as root user too.


2 Answers

Chase points the right way as options("prompt"=...) can be used for this. But his solutions adds a constant time expression which is not what we want.

The documentation for the function taskCallbackManager has the rest:

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> 

We register a callback that gets evaluated after each command completes. That does the trick. More fancy documentation is in this document from the R developer site.

like image 78
Dirk Eddelbuettel Avatar answered Sep 23 '22 01:09

Dirk Eddelbuettel


None of the other methods, which are based on callbacks, will update the prompt unless a top-level command is executed. So, pressing return in the console will not create a change. Such is the nature of R's standard callback handling.

If you install the tcltk2 package, you can set up a task scheduler that changes the option() as follows:

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

Voila, something like the MS DOS prompt.

NB: Inspiration came from this answer.


Note 1: The wait time (1000 in this case) refers to the # of milliseconds, not seconds. You might adjust it downward when sub-second resolution is somehow useful.

like image 30
Iterator Avatar answered Sep 21 '22 01:09

Iterator