Acg N. .
Temat: Przydatne - pasek postępu dla długotrwałych obliczeń
Może komuś się przyda :)Kiedy czekałem ponad 4 godziny na ukończenie pewnych obliczeń, nie wiedząc, ile one jeszcze potrwają, zapragnąłem mieć pasek postępu, który pozwalałby się zorientować, czy lepiej iść spać, bo potrwają one pewnie do rana, czy to kwestia minut. Niby oczywiste, a jakoś wcześniej nie przyszło do głowy, choć to tylko kilka linijek kodu.
http://ryouready.wordpress.com/2009/03/16/r-monitor-fu...
http://ryouready.wordpress.com/2010/01/11/progress-bar...
Ogólnie rzecz biorąc:
total <- 20
#pasek tekstowy
# pb <- txtProgressBar(min = 0, max = total, style = 3)
#pasek tcl/tk; wymaga library(tcltk)
#pb <- tkProgressBar(title = "progress bar", min = 0, max = total, width = 300)
# pasek bazujący na kontrolce Windowsa
winProgressBar(title = "progress bar", min = 0, max = total, width = 300)
for(i in 1:total){
# brudna robota
setWinProgressBar(pb, i, title=paste( round((i/total)*100, 0), "% done"))
}
close(pb)
Jeśli ma się kilka zagnieżdżonych pętli, z których zewnętrzna "kręci się" najwolniej, zaś wewnętrzne wykonują tysiące iteracji, update paska należy dać właśnie do tej wywoływanej najrzadziej, żeby sobie dodatkowo nie dodać kolejnych kilku godzin czekania, spowalniając obliczenia.