43 votes

Afficher une horloge en temps réel dans la ligne de commande R

Je me demande s'il existe un moyen d'afficher l'heure actuelle dans la ligne de commande R, comme dans MS DOS, nous pouvons utiliser

Prompt $T $P$G

pour inclure l'horloge dans chaque ligne de prompt. Quelque chose comme

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

fera l'affaire, mais alors c'est fixé à l'heure à laquelle il a été configuré. Je ne sais pas comment le faire se mettre à jour automatiquement.

48voto

Dirk Eddelbuettel Points 134700

Chase indique la bonne direction car options("prompt"=...) peut être utilisé pour cela. Mais ses solutions ajoutent une expression de temps constante ce qui n'est pas ce que nous voulons.

La documentation pour la fonction taskCallbackManager a le reste :

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>

Nous enregistrons un rappel qui est évalué après que chaque commande est terminée. Cela fait l'affaire. Une documentation plus sophistiquée est disponible dans ce document du site des développeurs R.

18voto

John Colby Points 10530

Voici une solution de rappel alternative :

updatePrompt <- function(...) {options(prompt=paste(Sys.time(),"> ")); return(TRUE)}
addTaskCallback(updatePrompt)

Cela fonctionne de la même manière que la méthode de Dirk, mais la syntaxe me semble un peu plus simple.

18voto

Iterator Points 10485

Aucune des autres méthodes, qui sont basées sur des rappels, ne mettra à jour l'invite sauf si une commande de niveau supérieur est exécutée. Ainsi, appuyer sur la touche Entrée dans la console ne créera aucun changement. Tel est le fonctionnement standard de la gestion des rappels de R.

Si vous installez le package tcltk2, vous pouvez configurer un planificateur de tâches qui modifie l' option() comme suit :

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

Voilà, quelque chose ressemblant à l'invite de commandes MS DOS.

NB : L'inspiration provient de cette réponse.


Note 1 : Le temps d'attente (1000 dans ce cas) fait référence au nombre de millisecondes, pas de secondes. Vous pouvez le réduire lorsque la résolution inférieure à la seconde est utile d'une manière ou d'une autre.

2voto

Chase Points 27342

Vous pouvez modifier le caractère par défaut affiché à l'aide de la commande options(). Vous voudrez peut-être essayer quelque chose comme ceci :

options(prompt = paste(Sys.time(), ">"))

Consultez la page d'aide pour ?options pour une liste complète des choses que vous pouvez définir. C'est une chose très utile à savoir !

En supposant que c'est quelque chose que vous voulez faire pour chaque session R, envisagez de déplacer cela dans votre .Rprofile. Plusieurs autres bonnes astuces de bonheur en programmation peuvent être trouvées ici sur ce sujet.

0voto

Daniel Standage Points 1725

Je ne connais pas de fonction R native pour faire cela, mais je sais que R a des interfaces avec d'autres langages qui ont des commandes temps système. Peut-être que c'est une option?

Thierry a mentionné system.time() et il y a aussi proc.time() en fonction de ce dont vous avez besoin, bien que ni l'un ni l'autre ne vous donnent l'heure actuelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X