2016-07-21 6 views
0

私はいくつかのループの進行状況を表示しています。R forループ内の詳細な進捗バー

total = length(df$x) 

pb <- winProgressBar(title = "Progress Bar", min = 0, max =total , width = 300) 

をそれから私が持っているループ閉じる前に:

setWinProgressBar(pb, i, title=paste(round(which(df$x== i)/total*100, 0),"% done")) 

これは私%を更新し、プログレスバーを与えるが、私が書いたループの外

。しかしバーはまったくいっぱいではありません。私はバーのスペースを埋めるようにしたい(私たちは選択肢があれば青色が望ましい)。私は何を追加する必要がありますか?また、pbapplyのように、残りの要素が追加されたかったと思います。

もう1つの複雑な注記では、もちろん1つの欠点は、サイズと長さが同じではないことがあるため、理論上のプログレスバーでは、 。

ループ内に私が最初にすべてをスキャンしてから、プログレスバーが均一であると仮定するのではなく、そのディストリビューションから作業するような方法はありますか?分単位で使用しているループでは、それぞれiはdata.frameに変換されるファイルです。データフレーム内のファイルサイズまたは行の長さが適切な尺度になります。

答えて

0

バーを埋めるための自己教えです。ファイルを読み取るループの例:

df <- data.frame(x=(list.files("new/"))) 
total = length(df$x) 

pb <- winProgressBar(title = "Progress Bar", label="0% done", min = 0, max =total , width = 300, initial=0) 


for(i in df$x){ 
     u <- fread(paste0("Z:/sec/new/",i)) 

setWinProgressBar(pb, which(df$x== i),label=paste(round(which(df$x== i)/total*100, 0),"% done")) 
    } 

close(pb) 

時間とスキャンファイルのサイズは、最初にわかっていません。