library(drake)
random <- function(...) {
  list(...)
  runif(1)
}
plan <- drake_plan(
  random1 = random(),
  random2 = random(random1),
  random3 = random(random2),
  random4 = random(random2, random3)
)

make(plan)
## cache /home/muelleki/git/R/drake-pitch/.drake
## connect 3 imports: check_local_env, random, plan
## connect 4 targets: random1, random2, random3, random4
## check 2 items: list, runif
## check 1 item: random
## check 1 item: random1
## check 1 item: random2
## check 1 item: random3
## check 1 item: random4
## All targets are already up to date.
drake::loadd(random4)
## cache /home/muelleki/git/R/drake-pitch/.drake
random4
## [1] 0.9490513
drake::clean(random2)
## cache /home/muelleki/git/R/drake-pitch/.drake
make(plan)
## cache /home/muelleki/git/R/drake-pitch/.drake
## Unloading targets from environment:
##   random4
## connect 3 imports: check_local_env, random, plan
## connect 4 targets: random1, random2, random3, random4
## check 2 items: list, runif
## check 1 item: random
## check 1 item: random1
## check 1 item: random2
## load 1 item: random1
## target random2
## check 1 item: random3
## unload 1 item: random1
## target random3
## check 1 item: random4
## target random4
drake::loadd(random4)
## cache /home/muelleki/git/R/drake-pitch/.drake
random4
## [1] 0.06481026