Progress: 複数のプログレスバー

作成日 2015年12月27日  ·  7コメント  ·  ソース: r-lib/progress

素晴らしいことだ。 たとえば、プログレスバー内にプログレスバーがある場合...

最も参考になるコメント

ええ、その通りです。

アクティブなプログレスバーのグローバルスタックを持つことができると思います。 1つのプログレスバーのみをサポートするディスプレイ(特にR Studio)では、一番上のプログレスバーのみを表示し、残りの概要を表示する可能性があります。 例:3つのレベル:

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

適切なANSIサポートを備えた端末の場合、すべてのプログレスバー(最大10〜20)を一度に表示できます。

全てのコメント7件

このようなものがうまくいったらいいのにと思います:

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

ええ、その通りです。

アクティブなプログレスバーのグローバルスタックを持つことができると思います。 1つのプログレスバーのみをサポートするディスプレイ(特にR Studio)では、一番上のプログレスバーのみを表示し、残りの概要を表示する可能性があります。 例:3つのレベル:

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

適切なANSIサポートを備えた端末の場合、すべてのプログレスバー(最大10〜20)を一度に表示できます。

1行で3つまたは4つの同時プログレスバーをサポートできる1つの方法は、 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エスケープシーケンスを使用するオプションを追加できますか?

または、プログレスバー間で水平方向のスペースを分割することもできます...

このページは役に立ちましたか?
0 / 5 - 0 評価