Rでプログレスバーを表示する方法

r
進捗を表示させるためのプログレスバーの表示方法について説明します。
Author

Maple

Published

2025-08-02

Modified

2025-08-02

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