tar_assign: An assignment-based pipeline DSL

View source: R/tar_assign.R

tar_assignR Documentation

An assignment-based pipeline DSL

Description

An assignment-based domain-specific language for pipeline construction.

Usage

tar_assign(targets)

Arguments

targets

An expression with special syntax to define a collection of targets in a pipeline. Example: tar_assign(x <- tar_target(get_data())) is equivalent to list(tar_target(x, get_data())). The rules of the syntax are as follows:

  • The code supplied to tar_assign() must be enclosed in curly braces beginning with ⁠{⁠ and ⁠}⁠ unless it only contains a one-line statement or uses = as the assignment.

  • Each statement in the code block must be of the form x <- f(), or x = f() where x is the name of a target and f() is a function like tar_target() or tar_quarto() which accepts a name argument.

  • The native pipe operator ⁠|>⁠ is allowed because it lazily evaluates its arguments and be converted into non-pipe syntax without evaluating the code.

Value

A list of tar_target() objects. 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.

Examples

if (identical(Sys.getenv("TAR_LONG_EXAMPLES"), "true")) {
targets::tar_dir({ # tar_dir() runs code from a temporary directory.
write.csv(airquality, "data.csv", row.names = FALSE)
targets::tar_script({
  library(tarchetypes)
  tar_option_set(packages = c("readr", "dplyr", "ggplot2"))
  tar_assign({
    file <- tar_target("data.csv", format = "file")

    data <- read_csv(file, col_types = cols()) |>
      filter(!is.na(Ozone)) |>
      tar_target()

    model = lm(Ozone ~ Temp, data) |>
      coefficients() |>
      tar_target()

    plot <- {
        ggplot(data) +
          geom_point(aes(x = Temp, y = Ozone)) +
          geom_abline(intercept = model[1], slope = model[2]) +
          theme_gray(24)
      } |>
        tar_target()
  })
})
targets::tar_make()
})
}

wlandau/tarchetypes documentation built on Sept. 26, 2024, 12:23 p.m.