会很好。 例如,如果进度条中有一个进度条......
如果这样的事情有效,那就太好了:
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 个同时进度条的一种方法是使用unicode 盲文模式
[⠿⠿⠟⠛⠛⠛⠒⠒⠒⠒ ]
@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 终端都支持ANSI 转义序列以将光标向上移动,不幸的是某些(特别是默认的 Windows 终端)不支持,那么这将很容易做到,因此您只能使用\r
清除最后一行文本
你能添加一个选项来使用完整的 ANSI 转义序列吗?
或者,您可以拆分进度条之间的水平空间...
最有用的评论
是的,正是。
我认为我们可以拥有一个全局堆栈的活动进度条。 在仅支持一个进度条的显示中,最显着的是 R Studio,我们将只显示顶部的一个,并可能显示其余的摘要。 例如对于三个级别:
对于具有适当 ANSI 支持的终端,我们可以一次显示所有进度条(好吧,最多 10-20 个)。