Progress updates by progressr are designed to work out of the box
for any iterator framework in R, e.g. lapply(), foreach,
purrr, and plyr. Below you will find a set of examples that
illustrate how to use progressr in common use cases.
library(progressr)
handlers(global = TRUE)
my_fcn <- function(xs) {
p <- progressor(along = xs)
lapply(xs, function(x) {
Sys.sleep(0.1)
p(sprintf("x=%g", x))
sqrt(x)
})
}
y <- my_fcn(1:10)
# |==================== | 40%
library(foreach)
library(progressr)
handlers(global = TRUE)
my_fcn <- function(xs) {
p <- progressor(along = xs)
foreach(x = xs) %do% {
Sys.sleep(0.1)
p(sprintf("x=%g", x))
sqrt(x)
}
}
y <- my_fcn(1:10)
# |==================== | 40%
library(purrr)
library(progressr)
handlers(global = TRUE)
my_fcn <- function(xs) {
p <- progressor(along = xs)
map(xs, function(x) {
Sys.sleep(0.1)
p(sprintf("x=%g", x))
sqrt(x)
})
}
y <- my_fcn(1:10)
# |==================== | 40%
library(plyr)
library(progressr)
handlers(global = TRUE)
my_fcn <- function(xs) {
p <- progressor(along = xs)
llply(xs, function(x, ...) {
Sys.sleep(0.1)
p(sprintf("x=%g", x))
sqrt(x)
})
}
y <- my_fcn(1:10)
# |==================== | 40%
Note how this solution does not make use of plyr's .progress
argument, because the above solution is more powerful and more
flexible, e.g. we have more control over progress updates and their
messages. However, if you prefer the traditional plyr approach,
you can use .progress = "progressr", e.g. y <- llply(..., .progress
= "progressr").
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.