如何刷新R中的打印缓冲区?

时间:2017-07-04 20:01:09

标签: r

我想运行长时间运行的模拟并定期打印更新。但是,我发现即使我明确尝试print,我的flush语句也会被缓冲。在这里,例如:

for (i in 1:10)
{
    print(i)
    flush(stdout())
    Sys.sleep(1)
}

我希望这会每1秒增加一次,但它会在10秒后输出所有内容。

如何强制刷新打印缓冲区?

2 个答案:

答案 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))      
}