Progress: Plusieurs barres de progression

Créé le 27 déc. 2015  ·  7Commentaires  ·  Source: r-lib/progress

Ce serait génial. Par exemple, s'il y a une barre de progression dans une barre de progression...

Commentaire le plus utile

Oui exactement.

Je pense que nous pouvons avoir une pile globale de barres de progression actives. Dans les affichages qui ne prennent en charge qu'une seule barre de progression, notamment R Studio, nous n'affichons que la première et potentiellement un résumé pour le reste. Par exemple pour trois niveaux :

85% | 34% | 50% [====================--------------------] ETA 13s

Pour les terminaux avec une prise en charge ANSI appropriée, nous pouvons afficher toutes les barres de progression (enfin, jusqu'à 10-20) à la fois.

Tous les 7 commentaires

Ce serait bien si quelque chose comme ça fonctionnait :

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

Oui exactement.

Je pense que nous pouvons avoir une pile globale de barres de progression actives. Dans les affichages qui ne prennent en charge qu'une seule barre de progression, notamment R Studio, nous n'affichons que la première et potentiellement un résumé pour le reste. Par exemple pour trois niveaux :

85% | 34% | 50% [====================--------------------] ETA 13s

Pour les terminaux avec une prise en charge ANSI appropriée, nous pouvons afficher toutes les barres de progression (enfin, jusqu'à 10-20) à la fois.

Je pense qu'une façon de prendre en charge 3 ou 4 barres de progression simultanées sur une ligne consiste à utiliser des modèles braille unicode

[⠿⠿⠟⠛⠛⠛⠒⠒⠒⠒       ]

@jimhester c'est intelligent, mais aussi très limité, malheureusement.

La fonction ci-dessous que j'ai construite est très grossière, mais pourquoi quelque chose comme ci-dessous n'est-il pas possible ? J'aimerais l'avoir dans un package de style de progression avec les options de progression.

Recréer les données :

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

Fonction:

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)

Ce serait facile à faire si tous les terminaux R prenaient en charge la séquence d'échappement ANSI pour déplacer le curseur vers le haut des lignes, malheureusement certains (notamment le terminal Windows par défaut) ne le font pas, vous êtes donc limité à effacer uniquement la dernière ligne de texte avec \r .

Pouvez-vous ajouter une option pour utiliser des séquences d'échappement ANSI complètes ?

Alternativement, vous pouvez diviser l'espace horizontal entre les barres de progression...

Cette page vous a été utile?
0 / 5 - 0 notes