2013-01-18 10 views
41

Vorrei produrre un indicatore di avanzamento durante i miei lunghi algoritmi di esecuzione. Posso facilmente "bollare" un valore di avanzamento dal mio algoritmo (ad esempio invocando un callback di funzioni fornito appositamente per questo scopo), ma la difficoltà è nel processo di output del testo reale. Ogni chiamata a print crea una nuova riga e ciascuna con prefisso [1].Come stampare il testo nella console R senza creare nuove linee?

C'è un modo per stampare in momenti diversi, senza introdurre interruzioni di riga?

Per essere concreti, voglio ottenere una "animazione" che somigli al seguente se osservata in due momenti diversi.

0%... 

...

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

risposta

46

Uso cat() invece di print():

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

Uscite:

0%..10% 
7

Bah, Andrie mi ha battuto ad esso da 28 secondi.

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

Forse si può Ysé 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

Se davvero bisogno di una barra di avanzamento in quanto tale, utilizzare txtProgressBar per l'uscita della console. Oppure winProgressBar sotto Windows per una barra di avanzamento con finestra.

Problemi correlati