This function is like tar_make() except that targets run in parallel with transient future workers. It requires that you declare your future::plan() inside the _targets.R script. future is not a strict dependency of targets, so you must install future yourself.

tar_make_future(
  names = NULL,
  reporter = "verbose",
  workers = 1L,
  callr_function = callr::r,
  callr_arguments = list()
)

Arguments

names

Names of the targets to build or check. Set to NULL to check/build all the targets (default). Otherwise, you can supply symbols, a character vector, or tidyselect helpers like starts_with().

reporter

Character of length 1, name of the reporter to user. Controls how messages are printed as targets run in the pipeline. Choices:

  • "verbose": print one message for each target that runs (default).

  • "silent": print nothing.

  • "timestamp": print a time-stamped message for each target that runs.

  • "summary": print a running total of the number of each targets in each status category (queued, running, skipped, build, canceled, or errored).

workers

Positive integer, maximum number of transient future workers allowed to run at any given time.

callr_function

A function from callr to start a fresh clean R process to do the work. Set to NULL to run in the current session instead of an external process (but restart your R session just before you do in order to clear debris out of the global environment). callr_function needs to be NULL for interactive debugging, e.g. tar_option_set(debug = "your_target"). However, callr_function should not be NULL for serious reproducible work.

callr_arguments

A list of arguments to callr_function.

Value

NULL except if callr_function = callr::r_bg(), in which case a handle to the callr background process is returned. Either way, the value is invisibly returned.

Details

To configure tar_make_future() with a computing cluster, see the future.batchtools package documentation.

Examples

if (identical(Sys.getenv("TAR_LONG_EXAMPLES"), "true")) { tar_dir({ # tar_dir() runs code from a temporary directory. tar_script({ future::plan(future::multisession) tar_option_set() list(tar_target(x, 1 + 1)) }, ask = FALSE) tar_make_future() }) }