tar_cue_force()
creates a cue object to
force a target to run if an arbitrary condition evaluates to TRUE
.
Supply the returned cue object to the cue
argument of
targets::tar_target()
or similar.
Usage
tar_cue_force(
condition,
command = TRUE,
depend = TRUE,
format = TRUE,
repository = TRUE,
iteration = TRUE,
file = TRUE
)
Arguments
- condition
Logical vector evaluated locally when the target is defined. If any element of
condition
isTRUE
, the target will definitely rerun when the pipeline runs. Otherwise, the target may or may not rerun, depending on the other invalidation rules.condition
is evaluated when this cue factory is called, so the condition cannot depend on upstream targets, and it should be quick to calculate.- command
Logical, whether to rerun the target if command changed since last time.
- depend
Logical, whether to rerun the target if the value of one of the dependencies changed.
- format
Logical, whether to rerun the target if the user-specified storage format changed. The storage format is user-specified through
tar_target()
ortar_option_set()
.- repository
Logical, whether to rerun the target if the user-specified storage repository changed. The storage repository is user-specified through
tar_target()
ortar_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()
ortar_option_set()
.- file
Logical, whether to rerun the target if the file(s) with the return value changed or at least one is missing.
Details
tar_cue_force()
and tar_force()
operate differently.
The former defines a cue object based on an eagerly evaluated
condition, and tar_force()
puts the condition in a special
upstream target that always runs. Unlike tar_cue_force()
,
the condition in tar_force()
can depend on upstream targets,
but the drawback is that targets defined with tar_force()
will always show up as outdated in functions like tar_outdated()
and tar_visnetwork()
even though tar_make()
may still
skip the main target if the condition is not met.
Cue objects
A cue object is an object generated by targets::tar_cue()
,
tarchetypes::tar_cue_force()
, or similar. It is
a collection of decision rules that decide when a target
is invalidated/outdated (e.g. when tar_make()
or similar
reruns the target). You can supply these cue objects to the
tar_target()
function or similar. For example,
tar_target(x, run_stuff(), cue = tar_cue(mode = "always"))
is a target that always calls run_stuff()
during tar_make()
and always shows as invalidated/outdated in tar_outdated()
,
tar_visnetwork()
, and similar functions.
See also
Other cues:
tar_age()
,
tar_cue_age()
,
tar_cue_skip()
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(
targets::tar_target(
data,
data.frame(x = seq_len(26)),
cue = tarchetypes::tar_cue_force(1 > 0)
)
)
})
targets::tar_make()
targets::tar_make()
})
}