A batchtools local future is an synchronous uniprocess future that will be evaluated in a background R session. A batchtools interactive future is an synchronous uniprocess future that will be evaluated in the current R session (and variables will be assigned to the calling environment rather than to a local one). Both types of futures will block until the futures are resolved.

  envir = parent.frame(),
  substitute = TRUE,
  globals = TRUE,
  label = NULL,
  workers = 1L,
  registry = list(),



The R expression to be evaluated


The environment in which global environment should be located.


Controls whether expr should be substitute():d or not.


(optional) a logical, a character vector, a named list, or a Globals object. If TRUE, globals are identified by code inspection based on expr and tweak searching from environment envir. If FALSE, no globals are used. If a character vector, then globals are identified by lookup based their names globals searching from environment envir. If a named list or a Globals object, the globals are used as is.


(optional) Label of the future (where applicable, becomes the job name for most job schedulers).


(optional) The maximum number of workers the batchtools backend may use at any time. Interactive and "local" backends can only process one future at the time (workers = 1L), whereas HPC backends, where futures are resolved via separate jobs on a scheduler, can have multiple workers. In the latter, the default is workers = NULL, which will resolve to getOption("future.batchtools.workers"). If that is not specified, the value of environment variable R_FUTURE_BATCHTOOLS_WORKERS will be used. If neither are specified, then the default is 100.


(optional) A named list of settings to control the setup of the batchtools registry.


Additional arguments passed to BatchtoolsFuture().


An object of class BatchtoolsFuture.


batchtools local futures rely on the batchtools backend set up by batchtools::makeClusterFunctionsInteractive(external = TRUE) and batchtools interactive futures on the one set up by batchtools::makeClusterFunctionsInteractive(). These are supported by all operating systems.

An alternative to batchtools local futures is to use cluster futures of the future package with a single local background session, i.e. plan(cluster, workers = "localhost").

An alternative to batchtools interactive futures is to use transparent futures of the future package.


## Use local batchtools futures

## A global variable
a <- 1

## Create explicit future
f <- future({
  b <- 3
  c <- 2
  a * b * c
v <- value(f)
#> [1] 6

## Create implicit future
v %<-% {
  b <- 3
  c <- 2
  a * b * c
#> [1] 6