r - 循环中的控制台输出:如何在不添加换行符的情况下完全清除最后一个 cat 输出?
问题描述
我经常将以下内容添加到循环中以打印出每次迭代的一些消息。
for (word in c("a", "long message", "c")) {
cat("\r", word)
flush.console()
Sys.sleep(1)
}
如我们所见,该消息"c"
仅覆盖了前一个"long message"
. 我想避免这种情况。我唯一能想到的是添加额外的空白,例如
for (word in c("a", "long message", "c")) {
cat("\r", word, " ")
flush.console()
Sys.sleep(1)
}
回车后是否有更好的方法来获取干净的消息?请注意,我不想要换行符。
更新:@user1981275 发布了一个已确认可在 Linux 上运行的解决方案。仍然需要独立于平台的解决方案。
解决方案
ANSI Erase to end of line转义序列\033[K
可以与cat
(参见例如here)一起使用:
for (word in c("a", "long message", "c")) {
cat("\r", "\033[K", word)
flush.console()
Sys.sleep(1)
}
推荐阅读
- strapi - Strapi 上传到本地私有路径
- python - 如何用一个 for 循环和没有 if 条件来对偶数和奇数求和?
- swift - 从swiftui中的API调用获得响应后如何返回上一个屏幕?
- python - 交互式意外关键字参数
- sql - 使用 R 错误从 BigQuery 读取数据时出现语法错误:在第 1 行第 10 列遇到““FROM”“FROM”“。预期:
- odata - 如何访问 OData V2 服务的两级深度嵌套关联?
- r - 用先前值的趋势填充列中的缺失值
- javascript - React - useCallback 与 useState 的 setState(prevState... 访问先前状态的区别
- javascript - 如何创建具有平滑自动播放循环的滑块
- python-3.x - Python - win32api 光标脚本,自动移动光标,点击并返回