progressr | R Documentation |
The progressr package provides a minimal, unifying API for scripts and packages to report progress updates from anywhere including when using parallel processing.
The package is designed such that the developer can to focus on what progress should be reported on without having to worry about how to present it.
The end user has full control of how, where, and when to render
these progress updates. For instance, they can chose to report progress
in the terminal using utils::txtProgressBar()
or
progress::progress_bar()
or via the graphical user interface (GUI)
using utils::winProgressBar()
or tcltk::tkProgressBar()
.
An alternative to above visual rendering of progress, is to report it
using beepr::beep()
sounds.
It is possible to use a combination of above progression handlers, e.g.
a progress bar in the terminal together with audio updates.
Besides the existing handlers, it is possible to develop custom
progression handlers.
The progressr package uses R's condition framework for signaling
progress updated. Because of this, progress can be reported from almost
anywhere in R, e.g. from classical for and while loops, from map-reduce
APIs like the lapply()
family of functions, purrr, plyr, and
foreach.
The progressr package will also work with parallel processing via
the future framework, e.g. future.apply::future_lapply()
,
furrr::future_map()
, and foreach::foreach()
with doFuture.
The progressr package is compatible with Shiny applications.
In the terminal:
handler_txtprogressbar (default)
handler_pbcol
handler_pbmcapply
handler_progress
handler_ascii_alert
handler_debug
In a graphical user interface (GUI):
handler_rstudio
handler_tkprogressbar
handler_winprogressbar
As sound:
handler_beepr
handler_ascii_alert
Via the file system:
handler_filesize
In Shiny:
withProgressShiny
Via notification systems:
handler_ntfy
handler_notifier
handler_rpushbullet
Maintainer: Henrik Bengtsson henrikb@braju.com (ORCID) [copyright holder]
Useful links:
Report bugs at https://github.com/futureverse/progressr/issues
library(progressr)
xs <- 1:5
with_progress({
p <- progressor(along = xs)
y <- lapply(xs, function(x) {
Sys.sleep(0.1)
p(sprintf("x=%g", x))
sqrt(x)
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.