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.