【问题标题】:How to refer to previous targets in drake?如何在德雷克中引用以前的目标?
【发布时间】:2018-12-18 22:28:43
【问题描述】:

我想使用通配符生成一堆目标,然后有另一组引用这些原始目标的目标。我认为这个例子代表了我的想法:

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 个子任务(很好),还有 4 个基于这 4 个很好的子任务。

【问题讨论】:

    标签: drake-r-package


    【解决方案1】:

    这个问题经常出现,我喜欢你的措辞。

    关于问题的更多信息

    对于旁观者,我将打印出当前(有问题的)工作流程的计划和图表。

    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 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多