Archive

Posts Tagged ‘clock’

A clock utility, via console hackery

11th May, 2011 Leave a comment

A discussion on StackOverflow today shows an interesting use of special characters inside the cat function.

The most common special characters that you may have come across are the tab and newline characters, represented by \t and \n respectively. Try them for yourself.

cat("Red\tlorry\nYellow\tlorry\n")

cat also respects the backspace character, \b, and the carriage return character, \r, which means that you can delete things. Usually, this isn’t very useful, but it allows us to overwrite text in the console.

cat("ab\bc")      #\b removes the previous character
cat("abc\rde")    #\r removes everything to the start of the line

Here’s a simple clock utility, adapted from Mark, Zach and DWin’s code in the linked question, that uses this technique.

clock <- function(format = "%H:%M:%S", refresh = 1)
{
  repeat
  {
    cat("\r", format(Sys.time(), format), sep = "")
    flush.console()
    Sys.sleep(refresh)
  }
}
clock()
clock("%A %d %B %Y %I:%M:%OS3 %p", 1e-3)

Press escape to exit the clock utility. You can see a complete list of special characters over at asciitable.com.

EDIT: clock function now with customisable formatting.
ANOTHER EDIT: Refresh rate now updateable; extra example.

Tags: , ,
Follow

Get every new post delivered to your Inbox.

Join 218 other followers