如何参考德雷克以前的目标?
How to refer to previous targets in drake?
我想使用通配符生成一堆目标,然后有另一组目标引用那些原始目标。我认为这个例子代表了我的想法:
plan <- drake_plan(
sub_task = runif(1000, min = mean__, max = 50),
full_task = sub_task * 2
)
step <- 1:4
full_plan <- evaluate_plan(
plan,
rules = list(
mean__ = step
)
)
所以我现在得到的是 5 个目标,4 个 sub_tasks 和一个 final_task。我正在寻找的是获得 8 个目标。 4 个 sub_tasks(好的),以及另外 4 个基于这 4 个好的 sub_tasks。
这个问题经常出现,我喜欢你的措辞。
关于问题的更多信息
为了围观,我把当前(有问题的)工作流程的方案和图打印出来。
library(drake)
plan <- drake_plan(
sub_task = runif(1000, min = mean__, max = 50),
full_task = sub_task * 2
)
step <- 1:4
full_plan <- evaluate_plan(
plan,
rules = list(
mean__ = step
)
)
full_plan
#> # A tibble: 5 x 2
#> target command
#> <chr> <chr>
#> 1 sub_task_1 runif(1000, min = 1, max = 50)
#> 2 sub_task_2 runif(1000, min = 2, max = 50)
#> 3 sub_task_3 runif(1000, min = 3, max = 50)
#> 4 sub_task_4 runif(1000, min = 4, max = 50)
#> 5 full_task sub_task * 2
config <- drake_config(full_plan)
vis_drake_graph(config)
由 reprex package (v0.2.1)
于 2018-12-18 创建
解决方案
如您所说,我们希望 full_task_*
目标依赖于相应的 single_task_*
目标。为此,我们还需要在 full_task_*
命令中使用 mean__
通配符。通配符是基于文本替换的早期接口,因此它们本身不需要是独立的变量名。
library(drake)
plan <- drake_plan(
sub_task = runif(1000, min = mean__, max = 50),
full_task = sub_task_mean__ * 2
)
step <- 1:4
full_plan <- evaluate_plan(
plan,
rules = list(
mean__ = step
)
)
full_plan
#> # A tibble: 8 x 2
#> target command
#> <chr> <chr>
#> 1 sub_task_1 runif(1000, min = 1, max = 50)
#> 2 sub_task_2 runif(1000, min = 2, max = 50)
#> 3 sub_task_3 runif(1000, min = 3, max = 50)
#> 4 sub_task_4 runif(1000, min = 4, max = 50)
#> 5 full_task_1 sub_task_1 * 2
#> 6 full_task_2 sub_task_2 * 2
#> 7 full_task_3 sub_task_3 * 2
#> 8 full_task_4 sub_task_4 * 2
config <- drake_config(full_plan)
vis_drake_graph(config)
由 reprex package (v0.2.1)
于 2018-12-18 创建
我想使用通配符生成一堆目标,然后有另一组目标引用那些原始目标。我认为这个例子代表了我的想法:
plan <- drake_plan(
sub_task = runif(1000, min = mean__, max = 50),
full_task = sub_task * 2
)
step <- 1:4
full_plan <- evaluate_plan(
plan,
rules = list(
mean__ = step
)
)
所以我现在得到的是 5 个目标,4 个 sub_tasks 和一个 final_task。我正在寻找的是获得 8 个目标。 4 个 sub_tasks(好的),以及另外 4 个基于这 4 个好的 sub_tasks。
这个问题经常出现,我喜欢你的措辞。
关于问题的更多信息
为了围观,我把当前(有问题的)工作流程的方案和图打印出来。
library(drake)
plan <- drake_plan(
sub_task = runif(1000, min = mean__, max = 50),
full_task = sub_task * 2
)
step <- 1:4
full_plan <- evaluate_plan(
plan,
rules = list(
mean__ = step
)
)
full_plan
#> # A tibble: 5 x 2
#> target command
#> <chr> <chr>
#> 1 sub_task_1 runif(1000, min = 1, max = 50)
#> 2 sub_task_2 runif(1000, min = 2, max = 50)
#> 3 sub_task_3 runif(1000, min = 3, max = 50)
#> 4 sub_task_4 runif(1000, min = 4, max = 50)
#> 5 full_task sub_task * 2
config <- drake_config(full_plan)
vis_drake_graph(config)
由 reprex package (v0.2.1)
于 2018-12-18 创建解决方案
如您所说,我们希望 full_task_*
目标依赖于相应的 single_task_*
目标。为此,我们还需要在 full_task_*
命令中使用 mean__
通配符。通配符是基于文本替换的早期接口,因此它们本身不需要是独立的变量名。
library(drake)
plan <- drake_plan(
sub_task = runif(1000, min = mean__, max = 50),
full_task = sub_task_mean__ * 2
)
step <- 1:4
full_plan <- evaluate_plan(
plan,
rules = list(
mean__ = step
)
)
full_plan
#> # A tibble: 8 x 2
#> target command
#> <chr> <chr>
#> 1 sub_task_1 runif(1000, min = 1, max = 50)
#> 2 sub_task_2 runif(1000, min = 2, max = 50)
#> 3 sub_task_3 runif(1000, min = 3, max = 50)
#> 4 sub_task_4 runif(1000, min = 4, max = 50)
#> 5 full_task_1 sub_task_1 * 2
#> 6 full_task_2 sub_task_2 * 2
#> 7 full_task_3 sub_task_3 * 2
#> 8 full_task_4 sub_task_4 * 2
config <- drake_config(full_plan)
vis_drake_graph(config)
由 reprex package (v0.2.1)
于 2018-12-18 创建