sevilla - temperatura en algeciras espana
Mostrar un reloj de tiempo en la lĂnea de comando R (5)
Me pregunto si hay una manera de mostrar la hora actual en la línea de comando R, como en MS DOS, podemos usar
Prompt $T $P$G
para incluir el reloj de tiempo en cada línea de aviso. Algo como
options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))
lo hará, pero luego se arregla en el momento en que se configuró. No estoy seguro de cómo hacer que se actualice automáticamente.
Aquí hay una solución alternativa de devolución de llamada:
updatePrompt <- function(...) {options(prompt=paste(Sys.time(),"> ")); return(TRUE)}
addTaskCallback(updatePrompt)
Esto funciona igual que el método de Dirk, pero la sintaxis es un poco más simple para mí.
Chase señala el camino correcto ya que las options("prompt"=...)
se pueden usar para esto. Pero sus soluciones agregan una expresión de tiempo constante que no es lo que queremos.
La documentación para la función taskCallbackManager
tiene el resto:
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>
Registramos una devolución de llamada que se evalúa después de que se completa cada comando. Eso hace el truco. La documentación más elegante se encuentra en este documento del sitio del desarrollador de R.
Ninguno de los otros métodos, que se basan en devoluciones de llamada, actualizará el aviso a menos que se ejecute un comando de nivel superior. Por lo tanto, presionar regresar en la consola no creará un cambio. Tal es la naturaleza del manejo de devolución de llamada estándar de R.
Si instala el paquete tcltk2
, puede configurar un planificador de tareas que cambie la option()
siguiente manera:
library(tcltk2)
tclTaskSchedule(1000, {options(prompt=paste(Sys.time(),"> "))}, id = "ticktock", redo = TRUE)
Voila, algo así como el prompt de MS DOS.
NB: la inspiración vino de esta respuesta .
Nota 1: el tiempo de espera (1000 en este caso) se refiere al número de milisegundos, no a los segundos. Puede ajustarlo hacia abajo cuando la resolución de segundos es útil.
No sé de una función R nativa para hacer esto, pero sé que R tiene interfaces con otros lenguajes que sí tienen comandos de tiempo del sistema. Tal vez esta es una opción?
Thierry mencionó system.time()
y también hay proc.time()
dependiendo de para qué lo necesite, aunque ninguno de estos le da la hora actual.
Puede cambiar el carácter predeterminado que se muestra a través del comando options()
. Es posible que desee probar algo como esto:
options(prompt = paste(Sys.time(), ">"))
Consulte las ?options
página de ayuda para obtener una lista completa de cosas que puede configurar. ¡Es algo muy útil de saber!
Suponiendo que esto es algo que desea hacer para cada sesión R, considere moverlo a su .Rprofile
. Se pueden encontrar otros muchos buenos nuggets de felicidad en la programación sobre este tema.