2013-01-18 19 views
41

Chciałbym wypisać wskaźnik postępu podczas moich długich algorytmów działania. Mogę z łatwością "spaprać" wartość postępu z mojego algorytmu (na przykład poprzez wywołanie funkcji zwrotnej funkcji specjalnie dla tego celu), ale trudność polega na rzeczywistym procesie wyprowadzania tekstu. Każde wywołanie do print tworzy nową linię, a każda z nich jest poprzedzona [1].Jak wypisać tekst w konsoli R bez tworzenia nowych linii?

Czy istnieje sposób drukowania w różnych momentach bez wprowadzania podziałów linii?

Aby być konkretnym, chcę osiągnąć "animację", która wyglądałaby następująco, gdyby obserwowano ją w dwóch różnych czasach.

0%... 

...

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

Odpowiedz

46

Stosować cat() zamiast print():

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

Wyjścia:

0%..10% 
7

Bah, Andrie pokazał mi do niego przez 28 sekund.

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

Może YSE 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

Jeśli naprawdę potrzebujesz pasek postępu jako takiej, należy txtProgressBar wyjścia konsoli. Lub winProgressBar pod Windows dla okna z paskiem postępu.

Powiązane problemy