【发布时间】:2023-03-13 16:55:01
【问题描述】:
我编写了一个函数,它需要一些时间来运行(由于在一个巨大的数据集上进行了 1000 多个循环以及预测模型测试)。
为了了解状态,在调用函数时,我在函数的 for 循环内使用了message 命令。问题是函数完成后所有消息都显示在控制台中,而不是立即显示。所以它对我没有帮助:)
我试图在 Stackoverflow 上找到解决方案,但没有找到。例如,我查看了“showing a status message in R”这个问题。在处理函数后,该主题中的所有答案和示例代码仍然只在控制台中给我文本,而不是立即给我。
如何解决这个问题? R 中是否存在阻止在控制台中立即打印 message 文本的设置?
注意:我在下面尝试的示例,其结果与我的函数相同;处理函数后显示文本。
示例 1(约书亚·乌尔里希):
for(i in 1:10) {
Sys.sleep(0.2)
# Dirk says using cat() like this is naughty ;-)
#cat(i,"\r")
# So you can use message() like this, thanks to Sharpie's
# comment to use appendLF=FALSE.
message(i,"\r",appendLF=FALSE)
flush.console()
}
例子2(泰勒):
test.message <- function() {
for (i in 1:9){
cat(i)
Sys.sleep(1)
cat("\b")
}
}
编辑:第一个示例确实有效(“刷新控制台”是问题)...但是当我测试它时,出于某种原因我注释掉了刷新控制台:S
【问题讨论】:
-
关于您的第二个示例,您可能需要刷新标准输出,因为您的字符串中没有换行符,因此可能不会立即打印该行。
flush(stdout())应该可以解决问题。