我想运行长时间运行的模拟并定期打印更新。但是,我发现即使我明确尝试print
,我的flush
语句也会被缓冲。在这里,例如:
for (i in 1:10)
{
print(i)
flush(stdout())
Sys.sleep(1)
}
我希望这会每1秒增加一次,但它会在10秒后输出所有内容。
如何强制刷新打印缓冲区?
答案 0 :(得分:4)
我通常这样做:
for (i in 1:10) {
message(i,"\r",appendLF=FALSE)
flush.console()
Sys.sleep(1)
}
答案 1 :(得分:0)
您也可以使用cat()
:
for (i in 1:10) {
# Sleep for 1 second
Sys.sleep(1)
# Print the current iteration
cat(paste0("\r", i))
}