Mi piacerebbe scrivere una funzione che presenta all'utente un messaggio di stato che mostra qualcosa come il tempo, la percentuale di completamento e lo stato corrente di un processo. Posso gestire il montaggio del messaggio, ma mi piacerebbe fare qualcosa di diverso dalla semplice stampa sulla console e farlo scorrere verso l'alto, un messaggio dopo l'altro. Mi piacerebbe davvero che il messaggio cambiasse senza scorrere come message()
e senza alcuna grafica. È possibile con R?mostrando un messaggio di stato in R
risposta
Che ne dici di qualcosa del genere?
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()
}
Non usare 'cat()', usa 'message()' (che può essere soppresso) come ad esempio discusso su un post dei blogger R oggi discutendo i grip con 'cat()'. –
@Dirk: Dovrebbe essere 'message (..., appendLF = FALSE)' --- altrimenti i messaggi a scorrimento appariranno sulla console che l'OP desiderava specificamente evitare. – Sharpie
@Dirk sostituendo 'cat()' con 'message()' aggiunge una nuova riga ad ogni aggiornamento. Devi fare qualcosa in più per evitare la newline? FWIW, 'txtProgressBar' usa' cat() '. –
Ci possono essere più eleganti modi per farlo, ma questo potrebbe farlo:
test.message <- function() {
for (i in 1:9){
cat(i)
Sys.sleep(1)
cat("\b")
}
}
Se si sta generando automaticamente il vostro messaggio, avrete bisogno di calcolare quanti \ caratteri b in uscita per eseguire il backup della quantità corretta, ma è abbastanza semplice.
Il pacchetto utils
contiene txtProgressBar
e le funzioni per l'aggiornamento che può essere utilizzato per mostrare la percentuale di completamento di un processo.
Vedi le up1
, up2
e up3
funzioni che si creano durante una chiamata a txtProgressBar
per esempi di come vengono gestiti gli aggiornamenti senza dover scorrere la console.
È fantastico! Puoi anche creare e impostare la tua funzione di aggiornamento tramite: 'tpb <- txtProgressBar (...); myUpFun <- function (value) {...}; tpb $ up <- myUpFun'. Quindi puoi scrivere una funzione di aggiornamento usando 'message()' così Dirk può sopprimere il rumore. ;-) –
@Joshua: buona osservazione! Quando pensavo di creare una funzione di aggiornamento personalizzata, prevedevo di dover copiare e riscrivere 'txtProgressBar()' per implementarlo. – Sharpie
C'è anche 'plyr :: progress_text'. È un semplice wrapper per 'txtProgressBar', anche se ... – aL3xa
Ecco alcuni bling bling. Da ?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)
è davvero bello avere per completezza, ma il mio attuale bisogno è una soluzione solo testo. –
Non ho letto la tua domanda fino alla fine quando tcltk è comparso. È stata una risposta d'impulso, per la quale mi scuso. Forse tu dal futuro ne avrai bisogno un giorno. –
+1 Fantastico. Mi ispira anche a imparare un po 'di TclTk. – Iterator
- 1. mostrando un messaggio di errore di convalida come tooltip
- 2. messaggio di avviso Numero riga R
- 3. Mostrando un gtk.Calendar in un menu?
- 4. In R e knitr, posso sopprimere il messaggio di readOGR?
- 5. Mostrando un NSSharingServicePicker su MouseUp
- 6. R glmnet as.matrix() messaggio di errore
- 7. Mostrando una finestra di messaggio dal ViewModel è una violazione di MVVM - come evitare?
- 8. Mostrando un Tripple in Google Maps
- 9. Come ottenere il messaggio di stato HTTP in (py) curl?
- 10. Mostrando UIMenuController perde tastiera
- 11. mostrando millisecondi in matplotlib
- 12. Messaggio di errore installando il pacchetto Cairo in R
- 13. Mostrando solo parte di un div
- 14. Disattivazione di vim - INSERT - messaggio
- 15. Verifica dello stato del messaggio GCM
- 16. Express 4.14 - Come inviare 200 stato con un messaggio personalizzato?
- 17. system() è stato l'errore disabilitato messaggio
- 18. Il compito "messaggio" non è stato trovato
- 19. metodo POST, messaggio Stato (annullato) errore
- 20. Mostrando l'ultimo carattere di una password in un EditText
- 21. Mostrando edittext obliquely in android
- 22. modulo non mostrando in IE
- 23. Mostrando un marcatore ad un geo: url in Android Maps
- 24. InnoDB funziona, mostrando ancora "Il server database non supporta il messaggio del motore di archiviazione InnoDB"
- 25. Dimensioni della stringa nella funzione messaggio in R
- 26. Mostrando un'immagine con pylab.imshow()
- 27. Eclipse non mostrando errori XML
- 28. tfpt unshelve esegue la migrazione mostrando "Un elemento con la stessa chiave è già stato aggiunto."
- 29. Architect/StatET: Avvio di R Console è stato annullato perché il motore R non è riuscito
- 30. Jenkins GitHub Pull Request Builder - Messaggio di stato
"Si tratta di R. Non v'è alcun caso. Solo come". --Simon Blomberg –