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