You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合CLI消息与purrr系列函数:用walk()改写循环代码

使用purrr::walk()替代循环实现cli进度条

你可以用purrr::walk()替代原有的for循环,因为walk专门用于遍历集合并执行副作用操作(比如这里的休眠和进度条更新,不需要返回值),和原循环的行为完全匹配。

修改后的代码如下:

library(cli)
library(purrr)

n <- 10
cli_alert_info("About to start downloads of {n} file{?s}")

i <- 0
cli_progress_step("Got {i}/{n} {qty(i)}file{?s}.")

# 用walk替代for循环
walk(seq_len(n), function(.x) {
  Sys.sleep(0.5)
  cli_progress_update()
})

关键说明:

  • seq_len(n)提供了遍历的序列,和原循环的i in seq_len(n)对应
  • walk的第二个参数是匿名函数,里面包含原循环体的所有操作:Sys.sleep(0.5)模拟下载等待,cli_progress_update()更新进度条
  • 原有的cli进度条初始化代码无需修改,这部分是进度条的基础设置,和循环方式无关

如果想要更简洁的写法,还可以用公式风格的匿名函数:

walk(seq_len(n), ~{
  Sys.sleep(0.5)
  cli_progress_update()
})

内容的提问来源于stack exchange,提问作者Grasshopper_NZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:43:12