最後一個沒有實時打印,嘗試這樣的:
for(i in 1:10){
Sys.sleep(0.1)
print(i)
}
這看上去很好的Rstudio ,但在經典的Rgui中,您必須單擊控制檯才能刷新(例如通過增加睡眠,Sys.sleep(0.5)
有助於瞭解這一點)。您可以規避使用flush.console
它清除緩衝區:
for(i in 1:10){
Sys.sleep(0.1)
print(i)
flush.console()
}
或Windows您可以在上面選擇工具欄中Misc
並取消buffered output
。
如果你的目標是跟蹤你的循環過程中,上述方法感覺有點akward的(至少我的眼睛),當您通過大量迭代運行。在這種情況下,它可能是更好的使用進度條:
n<- 1000
pb <- txtProgressBar(min = 0, max = n, style = 3) #text based bar
for(i in 1:n){
Sys.sleep(0.001)
setTxtProgressBar(pb, i)
}
close(pb)
或者一些更漂亮:
library(tcltk)
n<- 1000
pb <- tkProgressBar(title = "Doing something", min = 0, max = n, width = 200)
for(i in 1:n){
Sys.sleep(0.001)
setTkProgressBar(pb, i, label=paste(round(i/n*100,1),"% done"))
}
close(pb)
哎呀,這可能是一個好主意,做一個真實的例子。感謝您解決問題。 – Eric 2013-03-28 06:03:55
埃裏克,檢查我更新的答案,我添加了函數的例子,這使得你一個不錯的進度條。 – 2013-03-28 06:49:20