【问题标题】:output from print() replacing itself on each iteration of a loop in Rprint() 的输出在 R 中循环的每次迭代中替换自身
【发布时间】:2021-07-04 22:20:04
【问题描述】:

循环内print() 调用的输出是否可以在每次循环迭代时在控制台/交互式降价文件中替换自身?如果这很重要,我会在 RStudio 中完成所有 R 编码。

例如,这是我目前观察到的行为:

for (i in 1:20){
 print(paste('iteration', i)) 
}  

[1] "iteration 1"
[1] "iteration 2"
[1] "iteration 3"
[1] "iteration 4"
[1] "iteration 5"
[1] "iteration 6"
[1] "iteration 7"
[1] "iteration 8"
[1] "iteration 9"
[1] "iteration 10"
[1] "iteration 11"
[1] "iteration 12"
[1] "iteration 13"
[1] "iteration 14"
[1] "iteration 15"
[1] "iteration 16"
[1] "iteration 17"
[1] "iteration 18"
[1] "iteration 19"
[1] "iteration 20"

在迭代次数相对较少的情况下,这还不错,但我确实喜欢打印出迭代,以便跟踪它——尤其是在迭代次数较多的情况下。那么有没有办法在第一次迭代时打印iteration 1,然后用iteration 2 替换该文本等等?

在 Python 中,我主要使用 Jupyter,您可以通过从 IPython.display 导入 clear_output 函数,然后在每次迭代调用 print() 之前立即调用它来实现这一点。例如

from IPython.display import display, clear_output
for i in range(1, 21):
    clear_output(wait=True)
    print('iteration', i)

R/RStudio 中有这样的东西吗?

【问题讨论】:

  • 您可以在您的for-loop 中添加cat("\f")

标签: r for-loop


【解决方案1】:

您可以使用cat\r 换行符(但不能使用\n 换行符)。

for (i in 1:3) {
  cat(paste("\riteration", i))
  Sys.sleep(1)
}
cat("\n")

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多