Introduction

This tutorial assumes that you have basic familiarity with {drake}, as most of the patterns shown here build off of drake workflow practices.

The plan

We start by building our plan. Imagine that we have the mtcars dataset, & we want to run some models on it.

Take note of the desc argument provided the mtcars target. This allows us to write a markdown description for a target.

# This is where you set up your workflow plan,
# a data frame with the steps of your analysis.

my_plan <- drake::drake_plan(
  report = knit(knitr_in("mtcars/report.Rmd"), file_out("mtcars/report.md"), quiet = TRUE),
  small = simulate(48),
  large = simulate(64),
  regression1 = target(
    reg1(data),
    transform = map(data = c(small, large), .tag_out = reg, .tag_in = cluster_id)
  ),
  regression2 = target(
    reg2(data),
    transform = map(data, .tag_out = reg, .tag_in = cluster_id)
  ),
  summ = target(
    suppressWarnings(summary(reg$residuals)),
    transform = map(reg, .tag_in = cluster_id)
  ),
  coef = target(
    suppressWarnings(summary(reg))$coefficients,
    transform = map(reg, .tag_in = cluster_id)
  ),
  
  mtcars = target(
    mtcars,
    desc = "
**This dataframe describes a bunch of cars that go vroom!**

I can't drive but one day I will learn
"
  ),
  
  mtcars_summary = target({
      out <- mtcars %>%
        dplyr::group_by(cyl) %>%
        dplyr::summarise(dplyr::across(c(disp, hp, drat, wt, qsec), mean))
      out    
    },
   desc = "
**Average of attributes of cars according to number of cylinders** 
This dataframe relates `cyl` (number of cylinders) to a few properties of mtcars
"
  ),
  trace = TRUE
)

Let’s examine our plan as a dataframe:

Now, let’s build it.

cache <- drake::get_cache()
#> Warning: get_cache() is deprecated. Use drake_cache() instead.
my_config <- drake_config(my_plan)
drake::make(config = my_config)
#> All targets are already up to date.

Taking it further

Usually, this is where drake’s job is done, but mandrake extends this a little, & lets us access documentation for this dataset directly from the workflow graph.

We load the column specification for mandrake.

lookup_cache <- mandrake::load_package_colspec("mandrake")
#> Adding cols from mandrake to lookup cache
#> Including mandrake.yaml in lookup cache

By default, this is found at {pkgname}/inst/{pkgname}.yaml, and generated using the * #' @col & * #' @inheritCol roxygen2 tags.

Examining this yields:

am:
  name: am
  direction: out
  aliases: []
  body: |-
    Logical, is this car okay to use in the morning, or should you save it for
    after midday?
  rd: |-
    Logical, is this car okay to use in the morning, or should you save it for
    after midday?
  html:
  - Logical, is this car okay to use in the morning, or should you save it for
  - after midday?
  topic: mtcars_dataset
  package: mandrake
  rd_ref: \code{\link[mandrake:mtcars_dataset]{mandrake::mtcars_dataset}}
  html_ref: <code><a href='https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>
'...': '...more column specs...'
'y':
  name: 'y'
  direction: out
  aliases: []
  body: if requested, the response used.
  rd: if requested, the response used.
  html: if requested, the response used.
  topic: lm_object
  package: mandrake
  rd_ref: \code{\link[mandrake:lm_object]{mandrake::lm_object}}
  html_ref: <code><a href='https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>

Attach the column documentation to our plan.

plan_extracted <- my_plan %>%
  mandrake::decorate_plan(cache, group = "cluster_id", lookup_cache = lookup_cache)
plan_extracted %>%
  dplyr::mutate(dplyr::across("command", rlang::as_label)) %>%
  knitr::kable("html", escape = TRUE) %>%
  kableExtra::kable_styling(c("striped", "responsive", "condensed"))
target command desc data regression1 cluster_id reg regression2 summ coef
coef_regression1_small <list> {“target”:“coef_regression1_small”,“command”:“<pre class=‘downlit’><span class=‘nf’><a href=‘https://rdrr.io/r/base/warning.html'>suppressWarnings<\/a><\/span><span class=’o’>(</span><span class=‘nf’><a href=‘https://rdrr.io/r/base/summary.html'>summary<\/a><\/span><span class=’o’>(</span><span class=‘nv’>regression1_small</span><span class=‘o’>)</span><span class=‘o’>)</span><span class=‘o’>\(&lt;\/span&gt;&lt;span class='nv'&gt;coefficients&lt;\/span&gt;&lt;\/pre&gt;&quot;,&quot;descripton&quot;:&quot;NA&quot;,&quot;column_descriptions&quot;:[{}]} </td> <td style="text-align:left;"> small </td> <td style="text-align:left;"> regression1_small </td> <td style="text-align:left;"> coef </td> <td style="text-align:left;"> regression1_small </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> coef_regression1_small </td> </tr> <tr> <td style="text-align:left;"> coef_regression1_large </td> <td style="text-align:left;"> &lt;list&gt; </td> <td style="text-align:left;"> {&quot;target&quot;:&quot;coef_regression1_large&quot;,&quot;command&quot;:&quot;&lt;pre class='downlit'&gt;\n&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/warning.html'&gt;suppressWarnings&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/summary.html'&gt;summary&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nv'&gt;regression1_large&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;span class='o'&gt;\)</span><span class=‘nv’>coefficients</span></pre>”,“descripton”:“NA”,“column_descriptions”:[{}]} large regression1_large coef regression1_large NA NA coef_regression1_large
coef_regression2_small <list> {“target”:“coef_regression2_small”,“command”:“<pre class=‘downlit’><span class=‘nf’><a href=‘https://rdrr.io/r/base/warning.html'>suppressWarnings<\/a><\/span><span class=’o’>(</span><span class=‘nf’><a href=‘https://rdrr.io/r/base/summary.html'>summary<\/a><\/span><span class=’o’>(</span><span class=‘nv’>regression2_small</span><span class=‘o’>)</span><span class=‘o’>)</span><span class=‘o’>\(&lt;\/span&gt;&lt;span class='nv'&gt;coefficients&lt;\/span&gt;&lt;\/pre&gt;&quot;,&quot;descripton&quot;:&quot;NA&quot;,&quot;column_descriptions&quot;:[{}]} </td> <td style="text-align:left;"> small </td> <td style="text-align:left;"> regression1_small </td> <td style="text-align:left;"> coef </td> <td style="text-align:left;"> regression2_small </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> coef_regression2_small </td> </tr> <tr> <td style="text-align:left;"> coef_regression2_large </td> <td style="text-align:left;"> &lt;list&gt; </td> <td style="text-align:left;"> {&quot;target&quot;:&quot;coef_regression2_large&quot;,&quot;command&quot;:&quot;&lt;pre class='downlit'&gt;\n&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/warning.html'&gt;suppressWarnings&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/summary.html'&gt;summary&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nv'&gt;regression2_large&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;span class='o'&gt;\)</span><span class=‘nv’>coefficients</span></pre>”,“descripton”:“NA”,“column_descriptions”:[{}]} large regression1_large coef regression2_large NA NA coef_regression2_large
large <list> {“target”:“large”,“command”:“<pre class=‘downlit’><span class=‘nf’><a href=‘https://rdrr.io/r/stats/simulate.html'>simulate<\/a><\/span><span class=’o’>(</span><span class=‘m’>64</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“x”,“description”:“if requested, the model matrix used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“y”,“description”:“if requested, the response used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”}]]} NA NA NA NA NA NA NA
mtcars <list> {“target”:“mtcars”,“command”:“<pre class=‘downlit’><span class=‘nv’>mtcars</span></pre>”,“descripton”:“<strong>This dataframe describes a bunch of cars that go vroom!</strong><br><br>I can’t drive but one day I will learn”,“column_descriptions”:[[{“name”:“mpg”,“description”:“Numeric.<br><code>mpg</code> or "Miles Per Gallon" is how many miles you can drive on<br>a gallon of fuel.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“cyl”,“description”:“Integer<br>Number of cylinders<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“disp”,“description”:“Integer.<br>I literally don’t know what this means<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“hp”,“description”:“Integer<br>Horsepower is a measure of the number of miniature horses this car<br>can fit inside itself, which run on a treadmill that make it go fast.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“drat”,“description”:“Numeric<br>This is a word you say when something doesn’t go the way you hoped.<br><strong>Drat!</strong><br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“wt”,“description”:“Numeric<br>Stands for "What the…" - An exclamation of surprise!<br><br>Or <strong>weight</strong>, maybe.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“qsec”,“description”:“Numeric.<br>Number of seconds you need to line up in a queue in order to buy this car.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“vs”,“description”:“Logical, Does the car ever compete?<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“am”,“description”:“Logical, is this car okay to use in the morning, or should you save it for<br>after midday?<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“gear”,“description”:“Integer,<br><br>How many different gears transmissions does this car have.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“carb”,“description”:“Integer, Number of grams of carbohydrates contained in this car.<br>Typically pretty low, as cars are not particularly nutritious.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”}]]} NA NA NA NA NA NA NA
mtcars_summary <list> {“target”:“mtcars_summary”,“command”:“<pre class=‘downlit’><span class=‘o’>{</span><span class=‘nv’>out</span> <span class=‘o’>&lt;-</span> <span class=‘nv’>mtcars</span> <span class=‘o’>%&gt;%</span><span class=‘nf’>dplyr</span><span class=‘nf’>::</span><span class=‘nf’><a href=‘https://dplyr.tidyverse.org/reference/group_by.html'>group_by<\/a><\/span><span class=’o’>(</span><span class=‘nv’>cyl</span><span class=‘o’>)</span> <span class=‘o’>%&gt;%</span><span class=‘nf’>dplyr</span><span class=‘nf’>::</span><span class=‘nf’><a href=‘https://dplyr.tidyverse.org/reference/summarise.html'>summarise<\/a><\/span><span class=’o’>(</span><span class=‘nf’>dplyr</span><span class=‘nf’>::</span><span class=‘nf’><a href=‘https://dplyr.tidyverse.org/reference/across.html'>across<\/a><\/span><span class=’o’>(</span><span class=‘nf’><a href=‘https://rdrr.io/r/base/c.html'>c<\/a><\/span><span class=’o’>(</span><span class=‘nv’>disp</span>, <span class=‘nv’>hp</span>, <span class=‘nv’>drat</span>, <span class=‘nv’>wt</span>, <span class=‘nv’>qsec</span><span class=‘o’>)</span>, <span class=‘nv’>mean</span><span class=‘o’>)</span><span class=‘o’>)</span><span class=‘nv’>out</span><span class=‘o’>}</span></pre>”,“descripton”:“<strong>Average of attributes of cars according to number of cylinders</strong><br>This dataframe relates <code>cyl</code> (number of cylinders) to a few properties of mtcars”,“column_descriptions”:[[{“name”:“cyl”,“description”:“Integer<br>Number of cylinders<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“disp”,“description”:“Integer.<br>I literally don’t know what this means<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“hp”,“description”:“Integer<br>Horsepower is a measure of the number of miniature horses this car<br>can fit inside itself, which run on a treadmill that make it go fast.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“drat”,“description”:“Numeric<br>This is a word you say when something doesn’t go the way you hoped.<br><strong>Drat!</strong><br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“wt”,“description”:“Numeric<br>Stands for "What the…" - An exclamation of surprise!<br><br>Or <strong>weight</strong>, maybe.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”},{“name”:“qsec”,“description”:“Numeric.<br>Number of seconds you need to line up in a queue in order to buy this car.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/mtcars_dataset.html'>mandrake::mtcars_dataset</a></code>”}]]} NA NA NA NA NA NA NA
regression1_small <list> {“target”:“regression1_small”,“command”:“<pre class=‘downlit’><span class=‘nf’>reg1</span><span class=‘o’>(</span><span class=‘nv’>small</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“coefficients”,“description”:“a named vector of coefficients<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“residuals”,“description”:“The residuals, that is response minus fitted values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“effects”,“description”:“<i>Column doc not found</i><br>”},{“name”:“rank”,“description”:“the numeric rank of the fitted linear model.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“fitted.values”,“description”:“The fitted mean values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“assign”,“description”:“<i>Column doc not found</i><br>”},{“name”:“qr”,“description”:“<i>Column doc not found</i><br>”},{“name”:“df.residual”,“description”:“the residual degrees of freedom.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“xlevels”,“description”:“(only where relevant) a record of the levels of the factors used in fitting.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“call”,“description”:“the matched call.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“terms”,“description”:“the <code><a href=’https://rdrr.io/r/stats/terms.html'>stats::terms()</a></code> object used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“model”,“description”:“if requested (the default), the model frame used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”}]]} small regression1_small regression1 regression1_small NA NA NA
regression1_large <list> {“target”:“regression1_large”,“command”:“<pre class=‘downlit’><span class=‘nf’>reg1</span><span class=‘o’>(</span><span class=‘nv’>large</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“coefficients”,“description”:“a named vector of coefficients<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“residuals”,“description”:“The residuals, that is response minus fitted values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“effects”,“description”:“<i>Column doc not found</i><br>”},{“name”:“rank”,“description”:“the numeric rank of the fitted linear model.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“fitted.values”,“description”:“The fitted mean values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“assign”,“description”:“<i>Column doc not found</i><br>”},{“name”:“qr”,“description”:“<i>Column doc not found</i><br>”},{“name”:“df.residual”,“description”:“the residual degrees of freedom.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“xlevels”,“description”:“(only where relevant) a record of the levels of the factors used in fitting.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“call”,“description”:“the matched call.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“terms”,“description”:“the <code><a href=’https://rdrr.io/r/stats/terms.html'>stats::terms()</a></code> object used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“model”,“description”:“if requested (the default), the model frame used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”}]]} large regression1_large regression1 regression1_large NA NA NA
regression2_small <list> {“target”:“regression2_small”,“command”:“<pre class=‘downlit’><span class=‘nf’>reg2</span><span class=‘o’>(</span><span class=‘nv’>small</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“coefficients”,“description”:“a named vector of coefficients<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“residuals”,“description”:“The residuals, that is response minus fitted values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“effects”,“description”:“<i>Column doc not found</i><br>”},{“name”:“rank”,“description”:“the numeric rank of the fitted linear model.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“fitted.values”,“description”:“The fitted mean values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“assign”,“description”:“<i>Column doc not found</i><br>”},{“name”:“qr”,“description”:“<i>Column doc not found</i><br>”},{“name”:“df.residual”,“description”:“the residual degrees of freedom.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“xlevels”,“description”:“(only where relevant) a record of the levels of the factors used in fitting.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“call”,“description”:“the matched call.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“terms”,“description”:“the <code><a href=’https://rdrr.io/r/stats/terms.html'>stats::terms()</a></code> object used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“model”,“description”:“if requested (the default), the model frame used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”}]]} small regression1_small regression2 regression2_small regression2_small NA NA
regression2_large <list> {“target”:“regression2_large”,“command”:“<pre class=‘downlit’><span class=‘nf’>reg2</span><span class=‘o’>(</span><span class=‘nv’>large</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“coefficients”,“description”:“a named vector of coefficients<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“residuals”,“description”:“The residuals, that is response minus fitted values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“effects”,“description”:“<i>Column doc not found</i><br>”},{“name”:“rank”,“description”:“the numeric rank of the fitted linear model.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“fitted.values”,“description”:“The fitted mean values.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“assign”,“description”:“<i>Column doc not found</i><br>”},{“name”:“qr”,“description”:“<i>Column doc not found</i><br>”},{“name”:“df.residual”,“description”:“the residual degrees of freedom.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“xlevels”,“description”:“(only where relevant) a record of the levels of the factors used in fitting.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“call”,“description”:“the matched call.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“terms”,“description”:“the <code><a href=’https://rdrr.io/r/stats/terms.html'>stats::terms()</a></code> object used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“model”,“description”:“if requested (the default), the model frame used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”}]]} large regression1_large regression2 regression2_large regression2_large NA NA
report <list> {“target”:“report”,“command”:“<pre class=‘downlit’><span class=‘nf’>knit</span><span class=‘o’>(</span><span class=‘nf’>knitr_in</span><span class=‘o’>(</span><span class=‘s’>"mtcars/report.Rmd"</span><span class=‘o’>)</span>, <span class=‘nf’>file_out</span><span class=‘o’>(</span><span class=‘s’>"mtcars/report.md"</span><span class=‘o’>)</span>, quiet <span class=‘o’>=</span> <span class=‘kc’>TRUE</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[{}]} NA NA NA NA NA NA NA
small <list> {“target”:“small”,“command”:“<pre class=‘downlit’><span class=‘nf’><a href=‘https://rdrr.io/r/stats/simulate.html'>simulate<\/a><\/span><span class=’o’>(</span><span class=‘m’>48</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“x”,“description”:“if requested, the model matrix used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”},{“name”:“y”,“description”:“if requested, the response used.<br>Found at <code><a href=’https://mstrasiot.to/mandrake//reference/lm_object.html'>mandrake::lm_object</a></code>”}]]} NA NA NA NA NA NA NA
summ_regression1_small <list> {“target”:“summ_regression1_small”,“command”:“<pre class=‘downlit’><span class=‘nf’><a href=‘https://rdrr.io/r/base/warning.html'>suppressWarnings<\/a><\/span><span class=’o’>(</span><span class=‘nf’><a href=‘https://rdrr.io/r/base/summary.html'>summary<\/a><\/span><span class=’o’>(</span><span class=‘nv’>regression1_small</span><span class=‘o’>\(&lt;\/span&gt;&lt;span class='nv'&gt;residuals&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;\/pre&gt;&quot;,&quot;descripton&quot;:&quot;NA&quot;,&quot;column_descriptions&quot;:[[{&quot;name&quot;:&quot;Min.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;1st Qu.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;Median&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;Mean&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;3rd Qu.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;Max.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;}]]} </td> <td style="text-align:left;"> small </td> <td style="text-align:left;"> regression1_small </td> <td style="text-align:left;"> summ </td> <td style="text-align:left;"> regression1_small </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> summ_regression1_small </td> <td style="text-align:left;"> NA </td> </tr> <tr> <td style="text-align:left;"> summ_regression1_large </td> <td style="text-align:left;"> &lt;list&gt; </td> <td style="text-align:left;"> {&quot;target&quot;:&quot;summ_regression1_large&quot;,&quot;command&quot;:&quot;&lt;pre class='downlit'&gt;\n&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/warning.html'&gt;suppressWarnings&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/summary.html'&gt;summary&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nv'&gt;regression1_large&lt;\/span&gt;&lt;span class='o'&gt;\)</span><span class=‘nv’>residuals</span><span class=‘o’>)</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“Min.”,“description”:“<i>Column doc not found</i><br>”},{“name”:“1st Qu.”,“description”:“<i>Column doc not found</i><br>”},{“name”:“Median”,“description”:“<i>Column doc not found</i><br>”},{“name”:“Mean”,“description”:“<i>Column doc not found</i><br>”},{“name”:“3rd Qu.”,“description”:“<i>Column doc not found</i><br>”},{“name”:“Max.”,“description”:“<i>Column doc not found</i><br>”}]]} large regression1_large summ regression1_large NA summ_regression1_large NA
summ_regression2_small <list> {“target”:“summ_regression2_small”,“command”:“<pre class=‘downlit’><span class=‘nf’><a href=‘https://rdrr.io/r/base/warning.html'>suppressWarnings<\/a><\/span><span class=’o’>(</span><span class=‘nf’><a href=‘https://rdrr.io/r/base/summary.html'>summary<\/a><\/span><span class=’o’>(</span><span class=‘nv’>regression2_small</span><span class=‘o’>\(&lt;\/span&gt;&lt;span class='nv'&gt;residuals&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;span class='o'&gt;)&lt;\/span&gt;&lt;\/pre&gt;&quot;,&quot;descripton&quot;:&quot;NA&quot;,&quot;column_descriptions&quot;:[[{&quot;name&quot;:&quot;Min.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;1st Qu.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;Median&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;Mean&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;3rd Qu.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;},{&quot;name&quot;:&quot;Max.&quot;,&quot;description&quot;:&quot;&lt;i&gt;Column doc not found&lt;\/i&gt;&lt;br&gt; &quot;}]]} </td> <td style="text-align:left;"> small </td> <td style="text-align:left;"> regression1_small </td> <td style="text-align:left;"> summ </td> <td style="text-align:left;"> regression2_small </td> <td style="text-align:left;"> NA </td> <td style="text-align:left;"> summ_regression2_small </td> <td style="text-align:left;"> NA </td> </tr> <tr> <td style="text-align:left;"> summ_regression2_large </td> <td style="text-align:left;"> &lt;list&gt; </td> <td style="text-align:left;"> {&quot;target&quot;:&quot;summ_regression2_large&quot;,&quot;command&quot;:&quot;&lt;pre class='downlit'&gt;\n&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/warning.html'&gt;suppressWarnings&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nf'&gt;&lt;a href='https://rdrr.io/r/base/summary.html'&gt;summary&lt;\/a&gt;&lt;\/span&gt;&lt;span class='o'&gt;(&lt;\/span&gt;&lt;span class='nv'&gt;regression2_large&lt;\/span&gt;&lt;span class='o'&gt;\)</span><span class=‘nv’>residuals</span><span class=‘o’>)</span><span class=‘o’>)</span></pre>”,“descripton”:“NA”,“column_descriptions”:[[{“name”:“Min.”,“description”:“<i>Column doc not found</i><br>”},{“name”:“1st Qu.”,“description”:“<i>Column doc not found</i><br>”},{“name”:“Median”,“description”:“<i>Column doc not found</i><br>”},{“name”:“Mean”,“description”:“<i>Column doc not found</i><br>”},{“name”:“3rd Qu.”,“description”:“<i>Column doc not found</i><br>”},{“name”:“Max.”,“description”:“<i>Column doc not found</i><br>”}]]} large regression1_large summ regression2_large NA summ_regression2_large NA
my_config <- drake_config(plan_extracted)

Build the graph

graph_info <- drake_graph_info(
  my_config, 
  group = "cluster_id", 
  clusters = c("summ", "coef"), 
  build_times = "none",
  on_select_col = "desc")

graph <- render_drake_graph(
  graph_info, 
  on_select = "embedHandler",
  ncol_legend = 4
  ) %>% mandrake::attach_dependencies(standalone = F)

Graph

graph