varias mtext graficos graficas r message status statusbar

mtext - text in r



mostrando un mensaje de estado en R (4)

Me gustaría escribir una función que presente al usuario un mensaje de estado que muestre algo como la hora, el porcentaje completado y el estado actual de un proceso. Puedo manejar el ensamblaje del mensaje, pero me gustaría hacer algo más que simplemente imprimir en la consola y hacer que se desplace hacia arriba, mensaje tras mensaje. Realmente me gustaría que el mensaje cambie sin desplazarse como message() y sin gráficos. ¿Es esto posible con R?


¿Qué tal algo como esto?

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() }


Aquí hay algo de bling bling. Desde ?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)


El paquete utils contiene txtProgressBar y funciones para actualizarlo que se pueden usar para mostrar el porcentaje completado de un proceso.

Vea las up1 , up2 y up3 que se crean durante una llamada a txtProgressBar para ver ejemplos de cómo se manejan las actualizaciones sin desplazar la consola.


Puede haber formas más elegantes de hacer esto, pero esto podría hacerlo:

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

Si está generando automáticamente su mensaje, deberá calcular cuántos / b caracteres para generar una copia de seguridad de la cantidad correcta, pero eso es bastante sencillo.