The progressify package allows you to easily add progress
reporting to sequential and parallel map-reduce code by piping to the
progressify() function. Easy!
library(progressify)
handlers(global = TRUE)
library(purrr)
slow_fcn <- function(x) {
Sys.sleep(0.1) # emulate work
x^2
}
xs <- 1:100
ys <- xs |> map(slow_fcn) |> progressify()
This vignette demonstrates how to use this approach to add progress
reporting to purrr functions such as map(), map_dbl(), and
walk().
The purrr map() function is commonly used to apply a function to
the elements of a vector or a list. For example,
library(purrr)
xs <- 1:100
ys <- map(xs, slow_fcn)
or equivalently using pipe syntax
xs <- 1:100
ys <- xs |> map(slow_fcn)
Here map() provides no feedback on how far it has progressed,
but we can easily add progress reporting by using:
library(purrr)
library(progressify)
handlers(global = TRUE)
xs <- 1:100
ys <- xs |> map(slow_fcn) |> progressify()
Using the default progress handler, the progress reporting will appear as:
|===== | 20%
The progressify() function supports the following purrr functions:
map(), map_chr(), map_dbl(), map_int(), map_lgl(), map_vec(), walk()map2(), map2_chr(), map2_dbl(), map2_int(), map2_lgl(), map2_vec(), walk2()pmap(), pmap_chr(), pmap_dbl(), pmap_int(), pmap_lgl(), pmap_vec(), pwalk()imap(), imap_chr(), imap_dbl(), imap_int(), imap_lgl()modify(), modify2(), imodify()