Ce serait génial. Par exemple, s'il y a une barre de progression dans une barre de progression...
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...
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 :
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.