An assignment-based domain-specific language for pipeline construction.
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 tolist(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()
, orx = f()
wherex
is the name of a target andf()
is a function liketar_target()
ortar_quarto()
which accepts aname
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()
})
}