我需要显示循环内各种变量的变化值(以跟踪我的分配算法正在做什么;数据集太大,无法每次都等待输出以确定行为是否合意)。如何在不清除控制台的情况下显示更新的输出?
目前我使用以下逻辑...
i <- 90
while (i < 105) {
cat("\r", paste("count value = ",as.character(i %% 99)))
Sys.sleep(0.25)
i <- i + 1}
这将显示输出作为...
count value = 11
的问题是,上述代码仅覆盖所显示的输出。所以,当我们到i = 101,屏幕显示...
count value = 28
的,而不是...
count value = 2
...其中最后一个数字8是一个遗留下来的先前显示输出。
该命令仅覆盖显示器。
cat("\014", paste("count value = ",as.character(i %% 99)))
可以使用,但它每次清除整个控制台这是另一个问题。
有没有办法清除显示行而不清除控制台,但不只是覆盖?这是我正在做的一个小版本,当使用大尺寸的多个数字进行显示时,它变得非常混乱。
为什么你使用'while'循环时,你应该使用'for'循环? – Roland
@Roland没有特别的理由,除了较长的代码之外,是否有区别? – Gaurav
这是非常不寻常的,并且可读性稍差(当然,编写起来不太方便)。自从一年多以来,我没有在R中使用过“while”循环。 (如果我真的需要一个,我可能会转向Rcpp。) – Roland