An opinionated lightweight template for smooth targets
flows.
A sibling of dflow
remotes::install_github("milesmcbain/tflow")
Set dependencies = TRUE
to also install capsule, conflicted, dontenv, targets, and tarchetypes.
tflow::use_tflow()
:
./
|_ R/
|_ _targets.R
|_ packages.R
|_ .env
tflow::use_rmd("analysis")
:
√ Creating 'doc/'
√ Writing 'doc/analysis.Rmd'
Add this target to your tar_plan():
tar_render(report, "doc/analysis..Rmd")
√ library(rmarkdown) added to ./packages.R
tflow::use_gitignore()
:
Drop in a starter ./.gitignore
with ignores for drake
and renv
among others.
tflow
is a port of dflow
from drake
to targets
. targets
can be used many ways, and it turns out it can be used in an almost identical workflow to dflow
.
tflow
tries to set up a minimalist ergonomic workflow for targets
pipeline
development. To get the most out of it follow these tips:
-
Put all your target code in separate functions in
R/
. Usefnmate
to quickly generate function definitions in the right place. Let the plan in_targets.R
define the structure of the workflow and use it as a map for your sources. Use 'jump to function' to quickly navigate to them. -
Use a call
tar_make()
to kick off building your plan in a new R session. -
Put all your
library()
calls intopackages.R
. This way you'll have them in one place when you go to add sandboxing withrenv
,packarat
, andswitchr
etc. -
Take advantage of automation for loading
targets
targets at the cursor with the 'load target at cursor' addin. Or thetflow
addin: 'load editor targets' to load all targets referred to in the current editor.
Some things are baked into the template that will help you avoid common pitfalls and make your project more reproducible:
-
library(conflicted)
is called inpackages.R
to detect package masking issues. -
.env
is added carrying the following options to avoid misuse of logical vector tests:
_R_CHECK_LENGTH_1_LOGIC2_=verbose
_R_CHECK_LENGTH_1_CONDITION_=true