Rでプログレスバーを表示する方法
r
進捗を表示させるためのプログレスバーの表示方法について説明します。
txtProgressBar() を使う(Base R)
最も基本的で標準的な方法です。
n <- 100
pb <- txtProgressBar(min = 0, max = n, style = 3) # style: 1〜3
for (i in 1:n) {
Sys.sleep(0.01) # 実行時間のある処理を想定
setTxtProgressBar(pb, i)
}
close(pb) # 最後に閉じるオプション:
style = 1: 数字だけの表示style = 2: テキストのバー(=や>を使う)style = 3: より視覚的なバー
多くの場合、style = 3 が使われます。
② progress パッケージを使う(より柔軟)
install.packages("progress")
library(progress)
pb <- progress_bar$new(
format = " 処理中 [:bar] :percent 時間: :elapsed",
total = 100,
clear = FALSE,
width = 60
)
for (i in 1:100) {
Sys.sleep(0.01)
pb$tick()
}この方法は、バーのデザイン・パーセンテージ・時間表示などを柔軟にカスタマイズできます。
③ pbapply パッケージで apply 系に対応
lapply, sapply, apply などにプログレスバーを付けたい場合に便利です。
install.packages("pbapply")
library(pbapply)
results <- pbsapply(1:100, function(x) {
Sys.sleep(0.01)
x^2
})このように、pbapply::pbsapply を使うだけでプログレスバーが付きます。
④ dplyr::rowwise() + progressr(並列処理にも対応)
並列処理やtidyverse系のコードに対応させたい場合に有用です。
install.packages("progressr")
library(progressr)
handlers(global = TRUE)
handlers("txtprogressbar")
with_progress({
p <- progressor(steps = 100)
for (i in 1:100) {
Sys.sleep(0.01)
p()
}
})furrr::future_map() や foreach() にも統合できます。
結論と使い分け
| 用途 | 推奨方法 |
|---|---|
| Base Rで簡単に | txtProgressBar() |
| 見た目や時間も表示したい | progress |
apply系で使いたい |
pbapply |
| 並列処理を含むtidyverse環境 | progressr |
