Jak wypisać tekst w konsoli R bez tworzenia nowych linii?

Chciałbym uzyskać wskaźnik postępu podczas moich długich algorytmów biegowych. Mogę łatwo "bubble up" wartość postępu z mojego algorytmu (na przykład poprzez wywołanie podanej funkcji zwrotnej specjalnie w tym celu), ale trudność jest w rzeczywistym procesie wyjściowym tekstu. Każde wywołanie print tworzy nową linię, a każde poprzedzone [1].

Czy istnieje sposób na drukowanie w różnych momentach czasu, bez wprowadzania przerw w linii?

Być konkretniej, chcę osiągnąć "animację", która wyglądałaby następująco, gdyby była obserwowana w dwóch różnych momentach.

0%...

...

0%...2%...4%...
Author: smci, 2013-01-18

4 answers

Użyj cat() zamiast print():

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

Wyjścia:

0%..10%
 48
Author: Andrie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-18 09:15:49

Andrie wyprzedziła mnie o 28 sekund.

> for (i in 1:10) {
+ cat(paste("..", i, ".."))
+ }
.. 1 .... 2 .... 3 .... 4 .... 5 .... 6 .... 7 .... 8 .... 9 .... 10 ..
 8
Author: Roman Luštrik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-18 09:16:40

Maybe you can 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]
 8
Author: agstudy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-18 09:18:19

Jeśli naprawdę potrzebujesz paska postępu jako takiego, użyj txtProgressBar dla wyjścia konsoli. Lub winProgressBar pod Windows dla paska postępu w oknie.

 4
Author: Stephan Kolassa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-18 09:31:17