it-swarm.com.de

Wie kann ich Text in der R-Konsole ausgeben, ohne neue Zeilen zu erstellen?

Ich möchte einen Fortschrittsindikator während meiner langen Laufalgorithmen ausgeben. Ich kann einen Fortschrittswert leicht aus meinem Algorithmus heraus "sprudeln" (z. B. durch Aufrufen eines speziell für diesen Zweck bereitgestellten Funktionsrückrufs), aber die Schwierigkeit liegt in dem tatsächlichen Textausgabeprozess. Bei jedem Aufruf von print wird eine neue Zeile erstellt und mit [1].

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

Konkret möchte ich eine "Animation" erzeugen, die zu zwei verschiedenen Zeitpunkten wie folgt aussehen würde.

0%...

...

0%...2%...4%...
48
DuckMaestro

Verwenden Sie cat() anstelle von print():

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

Ausgänge:

0%..10%
53
Andrie

Bah, Andrie hat mich 28 Sekunden geschlagen.

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

Vielleicht kannst du 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
agstudy

Wenn Sie wirklich eine Fortschrittsanzeige benötigen, verwenden Sie txtProgressBar für die Konsolenausgabe. Oder winProgressBar unter Windows für eine Fortschrittsanzeige mit Fenster.

5
Stephan Kolassa

Ich glaube, dass Sie suchen \r in der cat -Funktion wie folgt:

for(i in 1:100) {
    cat('\r',
            i,
            '% |',
            rep('=', i / 4),
            ifelse(i == 100, '|\n',  '>'), sep = '')
    Sys.sleep(.1)
}
0
TPArrow