有没有办法在 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)
}
这正是我要找的。谢谢
沃尔夫冈
我有一个包含许多块的 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)
}
这正是我要找的。谢谢
沃尔夫冈