R语言 回车不适用于ANSI富文本

zvms9eto  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(162)

我尝试在R(windows)中的同一行上重复打印文本。如果我按以下方式使用回车,则可以实现:

text = c("word 1", "word 2", "word 3")
for (word in text) {
  cat("\rText =",word)
  Sys.sleep(0.4)
}

这会覆盖每一行。然而,我想用粗体打印单词,并使用ANSI代码\u001b[1m和重置\u001b[0m,结果是:

text = c("word 1", "word 2", "word 3")
for (word in text) {
  cat("\rText =\u001b[1m",word,"\u001b[0m")
  Sys.sleep(0.4)
}

这适用于前两个打印,但最终会导致输出:
Text =Text =word 3有趣的是,如果所有输出文本都是粗体,而不仅仅是其中的一部分,这确实有效。
我怎样才能让它工作?

waxmsbnn

waxmsbnn1#

我知道这可能不是你要找的,但也许它会给予你一个线索......我刚刚花了一个小时的时间在这个谜题上,\r\b的循环在打印文本中回溯都显示出奇怪的行为。这起作用了,但在控制台的顶部刷新:

text = c("word 1", "word 2", "word 3", "word 4")
for (word in text) {
  cat("\014")
  cat("Text =","\u001b[1m",word)
  Sys.sleep(0.4);
  cat("\u001b[0m");
  flush.console(); 
}

相关问题