Rでプログレスバー

Rでプログレスバーというのがあったので、やってみる
OSがLinuxなので、

txtProgressBar

を使ったが、tcltkを使うとGUIっぽいプログレスバーができるらしい。そのときは

library(tcltk)
tkProgressBar

を使う。

n <- 10000
for(i in seq(n)){
	pb <- txtProgressBar(min=1, max=n, style=3)
	setTxtProgressBar(pb, i)
	t.test(rnorm(10))
}
# これが徐々に伸びていく
  |======================================================================| 100%

 
並列計算時に進捗がわかるといいなと思っていたのだが、いままで print しても動かないし困っていた。
並列計算時にプログレスバーを動かすのはめんどくさいらしい

library(foreach)
library(utils)
library(iterators)
library(doParallel)
cl <- makeCluster(4, type='SOCK')
registerDoParallel(cl)
f <- function(){
	pb <- txtProgressBar(min=1, max=n-1,style=3)
		count <- 0
		function(...) {
		count <<- count + length(list(...)) - 1
		setTxtProgressBar(pb,count)
		flush.console()
		c(...)
	}
}

n <- 1000
# Run the loop in parallel
k <- foreach(i = seq(n), .final=c, .combine=f()) %dopar% {
  log2(i)
}