如何在Drake中迭代先前目标的值

时间:2019-03-02 17:29:33

标签: r drake-r-package

在Drake中,我想获取一个目标的并在map中使用它们来创建更多目标。在下面的示例中,是否有一种方法像y2一样使y3实际上成为三个目标?我知道拥有实际值与稍后要评估的目标有很大不同,所以也许这是不可能的。

x_vals = as.numeric(seq_len(3))

add_1 <- function(x) {
  print(length(x))
  x + 1
}

plan <- drake::drake_plan(
  x1 = x_vals,
  # Runs, as expected, on the whole vector at once
  y1 = add_1(x1),
  # Runs on the whole vector, despite the map()
  y2 = target(add_1(z), transform=map(z=x1)),
  # Makes three separate targets, runs the function on each element
  y3 = target(add_1(z), transform=map(z=!!x_vals))
)
drake::make(plan)
#> target x1
#> target y3_1
#> [1] 1
#> target y3_2
#> [1] 1
#> target y3_3
#> [1] 1
#> target y1
#> [1] 3
#> target y2_x1
#> [1] 3

我的问题与此问题密切相关,但是我想使用新的map界面: How to refer to previous targets in drake?

1 个答案:

答案 0 :(得分:1)

drake要求您在运行make()之前事先明确声明所有目标。因此,很遗憾,您提出的功能当前不可用。许多其他人都要求它,它是part of drake's future development goals。但是,这是迄今为止最大的实施挑战,我不知道何时可以使用。 map()和朋友可能会更近一步。