Progress updates for 'crossmap' functions
Henrik Bengtsson
Source:vignettes/progressify-23-crossmap.md
progressify-23-crossmap.RmdThe progressify package allows you to easily add
progress reporting to sequential and parallel map-reduce code by piping
to the progressify() function. Easy!
TL;DR
library(progressify)
handlers(global = TRUE)
library(crossmap)
slow_fcn <- function(x, y) {
Sys.sleep(0.1) # emulate work
x * y
}
xs <- list(1:5, 1:5)
ys <- xmap(xs, slow_fcn) |> progressify()Introduction
This vignette demonstrates how to use this approach to add progress
reporting to crossmap
functions such as xmap().
The crossmap package extends purrr
with functions that apply a function to every combination of elements in
a list of inputs. For example, xmap() computes the cross
product of its inputs:
Here xmap() provides no feedback on how far it has
progressed, but we can easily add progress reporting by using:
library(crossmap)
library(progressify)
handlers(global = TRUE)
xs <- list(1:5, 1:5)
ys <- xmap(xs, slow_fcn) |> progressify()Using the default progress handler, the progress reporting will appear as:
|===== | 20%
Supported Functions
The progressify() function supports the following
crossmap functions:
-
xmap()and variants (xmap_chr(),xmap_dbl(),xmap_int(),xmap_lgl(),xmap_vec(),xmap_dfc(),xmap_dfr(),xmap_mat(),xmap_arr()) xwalk()-
map_vec(),map2_vec(),pmap_vec(),imap_vec()