The commands in workflow plan data frames can have
wildcard symbols that can stand for datasets, parameters, function
arguments, etc. These wildcards can be evaluated over a set of
possible values using evaluate_plan
.
evaluate_plan(plan, rules = NULL, wildcard = NULL, values = NULL,
expand = TRUE, always_rename = FALSE)
workflow plan data frame, similar to one produced by
drake_plan()
Named list with wildcards as names and vectors of
replacements
as values. This is a way to evaluate multiple wildcards at once.
When not NULL
, rules
overrules wildcard
and
values
if
not NULL
.
character scalar denoting a wildcard placeholder
vector of values to replace the wildcard
in the drake instructions. Will be treated as a character vector.
Must be the same length as plan$command
if expand
is
TRUE
.
If TRUE
, create a new rows in the workflow plan
data frame
if multiple values are assigned to a single wildcard.
If FALSE
, each occurrence of the wildcard
is replaced with the next entry in the values
vector,
and the values are recycled.
logical. If TRUE
, always rename
targets according to the wildcard values, regardless of the
value of expand
. If FALSE
, only rename targets if
expand
is TRUE
.
A workflow plan data frame with the wildcards evaluated.
Specify a single wildcard with the wildcard
and values
arguments. In each command, the text in
wildcard
will be replaced by each value in values
in turn. Specify multiple wildcards with the rules
argument,
which overrules wildcard
and values
if
not NULL
. Here, rules
should be a list with wildcards
as names and vectors of possible values as list elements.
# NOT RUN {
# Create the part of the workflow plan for the datasets.
datasets <- drake_plan(
small = simulate(5),
large = simulate(50))
# Create a template workflow plan for the analyses.
methods <- drake_plan(
regression1 = reg1(dataset__),
regression2 = reg2(dataset__))
# Evaluate the wildcards in the template
# to produce the actual part of the workflow plan
# that encodes the analyses of the datasets.
# Create one analysis for each combination of dataset and method.
evaluate_plan(methods, wildcard = "dataset__",
values = datasets$target)
# Only choose some combinations of dataset and analysis method.
ans <- evaluate_plan(methods, wildcard = "dataset__",
values = datasets$target, expand = FALSE)
ans
# For the complete workflow plan, row bind the pieces together.
my_plan <- rbind(datasets, ans)
my_plan
# Workflow plans can have multiple wildcards.
# Each combination of wildcard values will be used
# Except when expand is FALSE.
x <- drake_plan(draws = rnorm(mean = Mean, sd = Sd))
evaluate_plan(x, rules = list(Mean = 1:3, Sd = c(1, 10)))
# }
Run the code above in your browser using DataLab