Progress updates for 'crossmap' functions

The 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:

library(crossmap)
xs <- list(1:5, 1:5)
ys <- xmap(xs, slow_fcn)

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: