Sería genial. Por ejemplo, si hay una barra de progreso dentro de una barra de progreso ...
Sería bueno si algo como esto funcionara:
pb1 <- progress_bar$new(total = 100)
for(i in 1:100){
pb1$tick()
pb2 <- progress_bar$new(total = 100)
for(j in 1:100){
pb2$tick()
Sys.sleep(1/1000)
}
}
Si, exacto.
Creo que podemos tener una pila global de barras de progreso activas. En las pantallas que solo admiten una barra de progreso, sobre todo R Studio, solo mostraríamos la superior y, potencialmente, mostraríamos un resumen del resto. Por ejemplo, para tres niveles:
85% | 34% | 50% [====================--------------------] ETA 13s
Para terminales con soporte ANSI adecuado, podemos mostrar todas las barras de progreso (bueno, hasta 10-20) a la vez.
Creo que una forma en que podría admitir 3 o 4 barras de progreso simultáneas en una línea es usando patrones braille Unicode
[⠿⠿⠟⠛⠛⠛⠒⠒⠒⠒ ]
@jimhester que es inteligente, pero también muy limitado, desafortunadamente.
La siguiente función que construí es muy burda, pero ¿por qué no es posible algo como a continuación? Me encantaría tenerlo en un paquete de estilo de progreso con las opciones de progreso.
Recrear datos:
df <- data.frame(samplecol=c(1:50),
file=c(1:50))
df$file <- paste0("file",df$file)
x <-function() {Sys.sleep(1/100)}
y <-function() {Sys.sleep(1/20)}
Función:
doubleProgressBar <- function(x, y) {
for (i in 1:100) {
x()
for(j in 1:50){
y()
cat("\014")
writeLines(c(paste0("OVERALL PROGRESS:", i,"%"," [",paste(rep("+",round((i/5))), collapse="")),
paste0("FILE%: ",(j*2),"%"," CURRENTLY LOADING FILE: ",df[j,"file"], " [",paste(rep("+",round((j/2.5))), collapse=""))))
}
cat("\014")
writeLines(c(paste0("OVERALL PROGRESS:", i,"%"," [",paste(rep("+",round((i/5))), collapse="")),
paste0("FILE%: ",(j*2),"%"," CURRENTLY LOADING FILE: ",df[j,"file"], " [",paste(rep("+",round((j/2.5))), collapse=""))))
}
}
###Does what I want, but with crude text entry.
###Would be nice to have a package with nice entry have a double bar
doubleProgressBar(x,y)
Esto sería fácil de hacer si todos los terminales R admitieran la secuencia de escape ANSI para mover el cursor hacia arriba, desafortunadamente, algunos (en particular el terminal predeterminado de Windows) no lo hacen, por lo que está limitado a borrar solo la última línea de texto con \r
.
¿Puede agregar una opción para usar secuencias de escape ANSI completas?
Alternativamente, puede dividir el espacio horizontal entre barras de progreso ...
Comentario más útil
Si, exacto.
Creo que podemos tener una pila global de barras de progreso activas. En las pantallas que solo admiten una barra de progreso, sobre todo R Studio, solo mostraríamos la superior y, potencialmente, mostraríamos un resumen del resto. Por ejemplo, para tres niveles:
Para terminales con soporte ANSI adecuado, podemos mostrar todas las barras de progreso (bueno, hasta 10-20) a la vez.