
Intended for debugging and checking your project. The dependency structure of the components of your analysis decides which targets are built and when.
deps_code(x)
a language object (code), character string (code as text), or imported function to analyze for dependencies.
A character vector, names of dependencies. Files wrapped in escaped double quotes. The other names listed are functions or generic R objects.
If the argument is a knitr
report
(for example, file_store("report.Rmd")
or "\"report.Rmd\""
)
the the dependencies of the expected compiled
output will be given. For example, deps_code(file_store("report.Rmd"))
will return target names found in calls to loadd()
and readd()
in active code chunks.
These loadd()
/readd()
targets are needed
in order to run knit(knitr_in("report.Rmd"))
to produce the output file "report.md"
, so technically,
they are dependencies of "report.md"
, not "report.Rmd"
.
The file_store()
function
alerts drake
utility functions to file names by
enclosing them in literal double quotes.
(For example, file_store("report.Rmd")
is just "\"report.Rmd\""
.)
Drake
takes special precautions so that a target/import
does not depend on itself. For example, deps_code(f)`` might return
"f"if
f()` is a recursive function, but make()
just ignores
this conflict and runs as expected. In other words, make()
automatically removes all self-referential loops in the dependency
network.
deps_targets make drake_plan drake_config
# NOT RUN {
# Your workflow likely depends on functions in your workspace.
f <- function(x, y){
out <- x + y + g(x)
saveRDS(out, "out.rds")
}
# Find the dependencies of f. These could be R objects/functions
# in your workspace or packages. Any file names or target names
# will be ignored.
deps_code(f)
# Define a workflow plan data frame that uses your function f().
my_plan <- drake_plan(
x = 1 + some_object,
my_target = x + readRDS(file_in("tracked_input_file.rds")),
return_value = f(x, y, g(z + w)),
strings_in_dots = "literals"
)
# Get the dependencies of workflow plan commands.
# Here, the dependencies could be R functions/objects from your workspace
# or packages, imported files, or other targets in the workflow plan.
deps_code(my_plan$command[1])
deps_code(my_plan$command[2])
deps_code(my_plan$command[3])
# New: you can also supply language objects.
deps_code(expression(x + 123))
# }
# NOT RUN {
test_with_dir("Quarantine side effects.", {
load_mtcars_example() # Get the code with drake_example("mtcars").
# Dependencies of the knitr-generated targets like 'report.md'
# include targets/imports referenced with `readd()` or `loadd()`.
deps_code(file_store("report.Rmd"))
})
# }
Run the code above in your browser using DataLab