/ / pokazuje komunikat statusu w R - r, komunikat, status, pasek stanu

pokazujący komunikat o stanie w R - r, komunikat, status, pasek stanu

Chciałbym napisać funkcję, która przedstawiaużytkownik komunikat o stanie, który pokazuje coś takiego jak czas, procent ukończenia i aktualny status procesu. Mogę poradzić sobie z montażem wiadomości, ale chciałbym zrobić coś innego niż tylko wydrukować na konsolę i kazać przewijać w górę, jedną wiadomość po drugiej. Naprawdę bardzo polubię wiadomość, żeby zmienić bez przewijania, message() i bez żadnej grafiki. Czy to możliwe z R?

Odpowiedzi:

24 dla odpowiedzi № 1

Co powiesz na coś takiego?

for(i in 1:10) {
Sys.sleep(0.2)
# Dirk says using cat() like this is naughty ;-)
#cat(i,"r")
# So you can use message() like this, thanks to Sharpie"s
# comment to use appendLF=FALSE.
message(i,"r",appendLF=FALSE)
flush.console()
}

17 dla odpowiedzi nr 2

The utils pakiet zawiera txtProgressBar i funkcje do aktualizacji, które mogą być użyte do pokazania procentu ukończenia procesu.

Zobacz up1, up2 i up3 funkcje, które są tworzone podczas wywołania txtProgressBar na przykładach sposobu obsługi aktualizacji bez przewijania konsoli.


15 dla odpowiedzi nr 3

Oto trochę bledu ?tcltk::tkProgressBar.

pb <- tkProgressBar("test progress bar", "Some information in %",
0, 100, 50)
Sys.sleep(0.5)
u <- c(0, sort(runif(20, 0 ,100)), 100)
for(i in u) {
Sys.sleep(0.1)
info <- sprintf("%d%% done", round(i))
setTkProgressBar(pb, i, sprintf("test (%s)", info), info)
}
Sys.sleep(5)
close(pb)

tekst alternatywny


7 dla odpowiedzi № 4

Mogą być na to bardziej eleganckie sposoby, ale może to zrobić:

test.message <- function() {
for (i in 1:9){
cat(i)
Sys.sleep(1)
cat("b")
}

}

Jeśli automatycznie generujesz wiadomość, musisz obliczyć, ile znaków b do wydrukowania, aby utworzyć kopię zapasową prawidłowej kwoty, ale to całkiem proste.