有没有办法在 Rmarkdown 中获取一个块 运行 的进度信息?

Is there a way to get progress information whan a chunk is running in Rmarkdown?

我有一个包含许多块的 Rmarkdown 文档。他们每个人都在循环内进行模拟。模拟可能需要几分钟到 20 分钟左右的时间。我想跟踪循环何时结束。但是,当块 运行ning 时,渲染面板中的通常输出不会改变。目前,当循环 运行 完成时,我将一些信息写入文本文件,但这似乎有点 hack。有没有更优雅的方法来做到这一点?

原来有一个专门用于此的软件包:knitrProgressBar

基于包文档的最小示例用法:

library(knitrProgressBar)

slow_function <- function(i, .pb=NULL) {  
  update_progress(.pb)  
  Sys.sleep(0.5)  
  i  
}

# create an R6 progress object for
# the number of loops/iterations in the target chunk

n_iterations <- 20
pb <- progress_estimated(n_iterations)
#class(pb)
#[1] "Progress" "R6"  

执行使用进度对象的块(或编写 Rmd 文件),将为块生成进度更新:

purrr::map_int(1:n_iterations, ~slow_function(.x, .pb = pb))

编辑:更接近问题 - 这也在循环内工作,而不仅仅是在 purrr::map

pb <- progress_estimated(n_iterations)
for(i in 1:n_iterations) {
  slow_function(i, .pb=pb)
}

这正是我要找的。谢谢

沃尔夫冈