Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

tar_age

Create a target that runs when the last run gets old


Description

tar_age() creates a target that reruns itself when it gets old enough. In other words, the target reruns periodically at regular intervals of time.

Usage

tar_age(
  name,
  command,
  age,
  pattern = NULL,
  tidy_eval = targets::tar_option_get("tidy_eval"),
  packages = targets::tar_option_get("packages"),
  library = targets::tar_option_get("library"),
  format = targets::tar_option_get("format"),
  iteration = targets::tar_option_get("iteration"),
  error = targets::tar_option_get("error"),
  memory = targets::tar_option_get("memory"),
  garbage_collection = targets::tar_option_get("garbage_collection"),
  deployment = targets::tar_option_get("deployment"),
  priority = targets::tar_option_get("priority"),
  resources = targets::tar_option_get("resources"),
  storage = targets::tar_option_get("storage"),
  retrieval = targets::tar_option_get("retrieval"),
  cue = targets::tar_option_get("cue")
)

Arguments

name

Character of length 1, name of the target.

command

R code to run the target and return a value.

age

A difftime object of length 1, such as as.difftime(3, units = "days"). If the target's output data files are older than age (according to the most recent time stamp over all the target's output files) then the target will rerun. On the other hand, if at least one data file is younger than Sys.time() - age, then the ordinary invalidation rules apply, and the target may or not rerun. If you want to force the target to run every 3 days, for example, set age = as.difftime(3, units = "days").

pattern

Language to define branching for a target. For example, in a pipeline with numeric vector targets x and y, tar_target(z, x + y, pattern = map(x, y)) implicitly defines branches of z that each compute x[1] + y[1], x[2] + y[2], and so on. See the user manual for details.

tidy_eval

Logical, whether to enable tidy evaluation when interpreting command and pattern. If TRUE, you can use the "bang-bang" operator !! to programmatically insert the values of global objects.

packages

Character vector of packages to load right before the target builds. Use tar_option_set() to set packages globally for all subsequent targets you define.

library

Character vector of library paths to try when loading packages.

format

Logical, whether to rerun the target if the user-specified storage format changed. The storage format is user-specified through tar_target() or tar_option_set().

iteration

Logical, whether to rerun the target if the user-specified iteration method changed. The iteration method is user-specified through tar_target() or tar_option_set().

error

Character of length 1, what to do if the target runs into an error. If "stop", the whole pipeline stops and throws an error. If "continue", the error is recorded, but the pipeline keeps going. error = "workspace" is just like error = "stop" except targets saves a special workspace file to support interactive debugging outside the pipeline. (Visit https://books.ropensci.org/targets/debugging.html to learn how to debug targets using saved workspaces.)

memory

Character of length 1, memory strategy. If "persistent", the target stays in memory until the end of the pipeline (unless storage is "worker", in which case targets unloads the value from memory right after storing it in order to avoid sending copious data over a network). If "transient", the target gets unloaded after every new target completes. Either way, the target gets automatically loaded into memory whenever another target needs the value. For cloud-based dynamic files such as format = "aws_file", this memory policy applies to temporary local copies of the file in _targets/scratch/": "persistent" means they remain until the end of the pipeline, and "transient" means they get deleted from the file system as soon as possible. The former conserves bandwidth, and the latter conserves local storage.

garbage_collection

Logical, whether to run base::gc() just before the target runs.

deployment

Character of length 1, only relevant to tar_make_clustermq() and tar_make_future(). If "worker", the target builds on a parallel worker. If "main", the target builds on the host machine / process managing the pipeline.

priority

Numeric of length 1 between 0 and 1. Controls which targets get deployed first when multiple competing targets are ready simultaneously. Targets with priorities closer to 1 get built earlier (and polled earlier in tar_make_future()). Only applies to tar_make_future() and tar_make_clustermq() (not tar_make()). tar_make_future() with no extra settings is a drop-in replacement for tar_make() in this case.

resources

A named list of computing resources. Uses:

  • Template file wildcards for future::future() in tar_make_future().

  • Template file wildcards clustermq::workers() in tar_make_clustermq().

  • Custom target-level future::plan(), e.g. resources = list(plan = future.callr::callr).

  • Custom curl handle if format = "url", e.g. resources = list(handle = curl::new_handle(nobody = TRUE)). In custom handles, most users should manually set nobody = TRUE so targets does not download the entire file when it only needs to check the time stamp and ETag.

  • Custom preset for qs::qsave() if format = "qs", e.g. resources = list(handle = "archive").

  • Arguments compression and compression_level to arrow::write_feather() and arrow:write_parquet() if format is "feather", "parquet", "aws_feather", or "aws_parquet".

  • Custom compression level for fst::write_fst() if format is "fst", "fst_dt", or "fst_tbl", e.g. resources = list(compress = 100).

  • AWS bucket and prefix for the "aws_" formats, e.g. resources = list(bucket = "your-bucket", prefix = "folder/name"). bucket is required for AWS formats. See the cloud computing chapter of the manual for details.

storage

Character of length 1, only relevant to tar_make_clustermq() and tar_make_future(). If "main", the target's return value is sent back to the host machine and saved locally. If "worker", the worker saves the value.

retrieval

Character of length 1, only relevant to tar_make_clustermq() and tar_make_future(). If "main", the target's dependencies are loaded on the host machine and sent to the worker before the target builds. If "worker", the worker loads the targets dependencies.

cue

A targets::tar_cue() object. (See the "Cue objects" section for background.) This cue object should contain any optional secondary invalidation rules, anything except the mode argument. mode will be automatically determined by the age argument of tar_age().

Details

tar_age() uses the cue from tar_cue_age(), which uses the time stamps from tar_meta()$time. If no time stamp is recorded, the cue defaults to the ordinary invalidation rules (i.e. mode = "thorough" in targets::tar_cue()). That means tar_age() cannot help with input file targets or URL targets (but if you are using format = "url" and your URLs have either ETags or "last-modified" time stamps, then you are better off without tar_age() anyway.)

In dynamic branching, cues operate on all branches at once, so tar_age() reruns when any branch reaches the age threshold in the age argument.

Value

A target object. See the "Target objects" section for background.

Target objects

Most tarchetypes functions are target factories, which means they return target objects or lists of target objects. Target objects represent skippable steps of the analysis pipeline as described at https://books.ropensci.org/targets/. Please read the walkthrough at https://books.ropensci.org/targets/walkthrough.html to understand the role of target objects in analysis pipelines.

For developers, https://wlandau.github.io/targetopia/contributing.html#target-factories explains target factories (functions like this one which generate targets) and the design specification at https://books.ropensci.org/targets-design/ details the structure and composition of target objects.

See Also

Examples

if (identical(Sys.getenv("TAR_LONG_EXAMPLES"), "true")) {
targets::tar_dir({ # tar_dir() runs code from a temporary directory.
targets::tar_script({
  library(tarchetypes)
  list(
    tarchetypes::tar_age(
      data,
      data.frame(x = seq_len(26)),
      age = as.difftime(0.5, units = "secs")
    )
  )
})
targets::tar_make()
Sys.sleep(0.6)
targets::tar_make()
})
}

tarchetypes

Archetypes for Targets

v0.2.0
MIT + file LICENSE
Authors
William Michael Landau [aut, cre] (<https://orcid.org/0000-0003-1878-3253>), Samantha Oliver [rev] (<https://orcid.org/0000-0001-5668-1165>), Tristan Mahr [rev] (<https://orcid.org/0000-0002-8890-5116>), Eli Lilly and Company [cph]
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.