Cue to run a target when the last output reaches a certain age
Source:R/tar_cue_age.R
, R/tar_cue_age_raw.R
tar_cue_age.Rd
tar_cue_age()
creates a cue object to
rerun a target if the most recent output data becomes old enough.
The age of the target is determined by targets::tar_timestamp()
,
and the way the time stamp is calculated is explained
in the Details section of the help file of that function.
tar_cue_age()
expects an unevaluated symbol for the name
argument, whereas tar_cue_age_raw()
expects a character string
for name
.
Usage
tar_cue_age(
name,
age,
command = TRUE,
depend = TRUE,
format = TRUE,
repository = TRUE,
iteration = TRUE,
file = TRUE
)
tar_cue_age_raw(
name,
age,
command = TRUE,
depend = TRUE,
format = TRUE,
repository = TRUE,
iteration = TRUE,
file = TRUE
)
Arguments
- name
Name of the target.
tar_cue_age()
expects an unevaluated symbol for thename
argument, whereastar_cue_age_raw()
expects a character string forname
.- age
A
difftime
object of length 1, such asas.difftime(3, units = "days")
. If the target's output data files are older thanage
(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 thanSys.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, setage = as.difftime(3, units = "days")
.- 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_age()
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()
).
Dynamic branches at regular time intervals
Time stamps are not recorded for whole dynamic targets,
so tar_age()
is not a good fit for dynamic branching.
To invalidate dynamic branches at regular intervals,
it is recommended to use targets::tar_older()
in combination
with targets::tar_invalidate()
right before calling tar_make()
.
For example,
tar_invalidate(any_of(tar_older(Sys.time - as.difftime(1, units = "weeks"))))
# nolint
invalidates all targets more than a week old. Then, the next tar_make()
will rerun those targets.
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.
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_force()
,
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_age(
name = data,
age = as.difftime(0.5, units = "secs")
)
)
)
})
targets::tar_make()
Sys.sleep(0.6)
targets::tar_make()
})
}