Progress: Varias barras de progreso

Creado en 27 dic. 2015  ·  7Comentarios  ·  Fuente: r-lib/progress

Sería genial. Por ejemplo, si hay una barra de progreso dentro de una barra 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:

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.

Todos 7 comentarios

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 ...

¿Fue útil esta página
0 / 5 - 0 calificaciones