Было бы замечательно. Например, если в индикаторе выполнения есть индикатор выполнения ...
Было бы неплохо, если бы работало что-то вроде этого:
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)
}
}
Да, точно.
Я думаю, что у нас может быть глобальный стек активных индикаторов выполнения. На дисплеях, поддерживающих только одну полосу выполнения, особенно в R Studio, мы будем показывать только верхнюю и, возможно, показывать сводку по остальным. Например, для трех уровней:
85% | 34% | 50% [====================--------------------] ETA 13s
Для терминалов с правильной поддержкой ANSI мы можем показать сразу все индикаторы выполнения (ну, до 10-20).
Я думаю, что одним из способов поддержки 3 или 4 одновременных индикаторов выполнения в одной строке является использование шаблонов Брайля в Юникоде.
[⠿⠿⠟⠛⠛⠛⠒⠒⠒⠒ ]
@jimhester умный, но, к сожалению, очень ограниченный.
Приведенная ниже функция, которую я построил, очень грубая, но почему невозможно что-то подобное ниже? Я бы хотел иметь его в пакете стиля прогресса с вариантами прогресса.
Восстановить данные:
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)}
Функция:
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)
Это было бы легко сделать, если бы все терминалы R поддерживали escape-последовательность ANSI для перемещения курсора вверх по строкам, к сожалению, некоторые (особенно терминал Windows по умолчанию) этого не делают, поэтому вы ограничены только очисткой последней строки текста с помощью \r
.
Можете ли вы добавить возможность использовать полные escape-последовательности ANSI?
В качестве альтернативы вы можете разделить горизонтальное пространство между индикаторами выполнения ...
Самый полезный комментарий
Да, точно.
Я думаю, что у нас может быть глобальный стек активных индикаторов выполнения. На дисплеях, поддерживающих только одну полосу выполнения, особенно в R Studio, мы будем показывать только верхнюю и, возможно, показывать сводку по остальным. Например, для трех уровней:
Для терминалов с правильной поддержкой ANSI мы можем показать сразу все индикаторы выполнения (ну, до 10-20).