最后一个是实时打印的,试试这样:
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。
如果您的目标是跟踪循环的过程,那么当您运行大量迭代时,上述方法会感觉有点尴尬(至少在我看来)。在这种情况下,使用进度条可能会更好:
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)