Ignore sections of commands and imported functions.
Details
In user-defined functions and drake_plan()
commands, you can
wrap code chunks in ignore()
to
Tell
drake
to not search for dependencies (targets etc. mentioned in the code) andIgnore changes to the code so downstream targets remain up to date. To enforce (1) without (2), use
no_deps()
.
Keywords
drake_plan()
understands special keyword functions for your commands.
With the exception of target()
, each one is a proper function
with its own help file.
target()
: give the target more than just a command. Usingtarget()
, you can apply a transformation (examples:https://books.ropensci.org/drake/plans.html#large-plans
), # nolint supply a trigger (https://books.ropensci.org/drake/triggers.html
), # nolint or set any number of custom columns.file_in()
: declare an input file dependency.file_out()
: declare an output file to be produced when the target is built.knitr_in()
: declare aknitr
file dependency such as an R Markdown (*.Rmd
) or R LaTeX (*.Rnw
) file.ignore()
: forcedrake
to entirely ignore a piece of code: do not track it for changes and do not analyze it for dependencies.no_deps()
: telldrake
to not track the dependencies of a piece of code.drake
still tracks the code itself for changes.id_chr()
: Get the name of the current target.drake_envir()
: get the environment where drake builds targets. Intended for advanced custom memory management.
Examples
if (FALSE) { # \dontrun{
isolate_example("Contain side effects", {
# Normally, `drake` reacts to changes in dependencies.
x <- 4
make(plan = drake_plan(y = sqrt(x)))
x <- 5
make(plan = drake_plan(y = sqrt(x)))
make(plan = drake_plan(y = sqrt(4) + x))
# But not with ignore().
make(plan = drake_plan(y = sqrt(4) + ignore(x))) # Builds y.
x <- 6
make(plan = drake_plan(y = sqrt(4) + ignore(x))) # Skips y.
make(plan = drake_plan(y = sqrt(4) + ignore(x + 1))) # Skips y.
# ignore() works with functions and multiline code chunks.
f <- function(x) {
ignore({
x <- x + 1
x <- x + 2
})
x # Not ignored.
}
make(plan = drake_plan(y = f(2)))
readd(x)
# Changes the content of the ignore() block:
f <- function(x) {
ignore({
x <- x + 1
})
x # Not ignored.
}
make(plan = drake_plan(x = f(2)))
readd(x)
})
} # }