2013-01-18 5 views
41

Ich möchte während meiner langen laufenden Algorithmen eine Fortschrittsanzeige ausgeben. Ich kann einen Fortschrittswert innerhalb meines Algorithmus leicht "aufblasen" (z. B. durch Aufrufen eines bereitgestellten Funktionsrückrufs speziell für diesen Zweck), aber die Schwierigkeit besteht in dem tatsächlichen Textausgabevorgang. Bei jedem Aufruf von print wird eine neue Zeile mit dem Präfix [1] erstellt.Wie kann man Text in der R-Konsole ausgeben, ohne neue Zeilen zu erstellen?

Gibt es eine Möglichkeit, zu verschiedenen Zeitpunkten zu drucken, ohne Zeilenumbrüche einzuführen?

Um konkret zu sein, möchte ich eine "Animation" erreichen, die wie folgt aussehen würde, wenn zu zwei verschiedenen Zeiten beobachtet.

0%... 

...

0%...2%...4%... 

Antwort

46

Verwenden cat() statt print():

cat("0%") 
cat("..10%") 

Ausgänge:

0%..10% 
7

Bah, schlagen Andrie mich um 28 Sekunden, um es.

> for (i in 1:10) { 
+ cat(paste("..", i, "..")) 
+ } 
.. 1 .... 2 .... 3 .... 4 .... 5 .... 6 .... 7 .... 8 .... 9 .... 10 .. 
8

Vielleicht können Sie plyr

l_ply(1:4,function(x) x+1,.progress= progress_text(char = '+'),.print=TRUE) 
    |         | 0%[1] 2 
    |++++++       | 25%[1] 3 
    |+++++++++++++++     | 50%[1] 4 
    |++++++++++++++++++++++   | 75%[1] 5 
    |++++++++++++++++++++++++++++++++ | 100%[1] 
4

yse Wenn Sie wirklich einen Fortschrittsbalken als solche benötigen, verwenden txtProgressBar für Konsolenausgabe. Oder winProgressBar unter Windows für eine Fensterleiste mit Fortschrittsbalken.

Verwandte Themen