7
votes

Afficher un compteur pour les boucles sur une ligne d'affichage

Je suis en train d'exécuter des boucles dans R de la variété suivante: xxx pré>

Je voudrais avoir un compteur qui affiche la valeur actuelle de i code> dans l'avancement de la boucle. Je veux que cela garde la trace de combien de fois je suis pour atteindre la fin de la boucle. Une façon de faire, c'est simplement insérer impression (i) code> dans le code de boucle. E.g., P>

[1] 1 2 3 ...


0 commentaires

5 Réponses :


10
votes

essayer d'utiliser la fonction flush.console () xxx

donne xxx

ici une petite modification au code qui sera imprimé un seul numéro et incrémentez-le avec chaque course. Il utilise une séquence de retour de chariot (\ r) pour éviter une longue liste de nombres dans la console. xxx


1 commentaires

Vrai que cela n'enveloppe pas assez de manière appropriée. Cela fonctionne pour mes besoins pour le moment étant, alors merci @mark, mais s'il y a une meilleure option wrap qui serait géniale.



7
votes

Regardez les fonctions TXTPROGRESSBAR, WINPROGRESSBAR (Windows uniquement) et TKProgressBar (emballage TCLTK) comme d'autres moyens de montrer vos progrès dans une boucle.

sur certaines consoles Vous pouvez également utiliser "\ r" ou "\ b" dans une instruction CAT pour revenir au début de la ligne et écraser le numéro d'itération précédent.


0 commentaires

0
votes

Pas une très belle solution, mais vous pouvez essayer quelque chose comme ceci dans votre boucle: xxx

mais vous devez régler manuellement la valeur de 30 pour adapter la largeur de votre console.


0 commentaires

2
votes

Si vous êtes intéressé, voici quelques exemples de barres de progression:

http: / /RyourAgry.wordpress.com/2009/03/16/R-Monitor-fonction-Progress-with-a-Progress-bar/

http://ryourady.wordpress.com/2010/01/11/PROGRESS-BARS-IN-R-PART-II-AWRAPPER-FOR-Applicy-fonctions/


0 commentaires

1
votes

Essayez ceci pour des boucles simples: xxx pré>

ou ceci pour des boucles imbriquées: p>

for(i in 1:100){
  for(j in 1:100){
    Sys.sleep(.1)  # Your code here
    cat("\r", i, ".", j, "of", 100, "\r") 
    flush.console()
  }
}


0 commentaires