Как перебрать значения предыдущей цели в Drake

В 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 Интерфейс: Как обратиться к предыдущим целям в Drake?

1 ответ

drakeтребует, чтобы вы явно объявили все свои цели заранее, прежде чем запуститьmake(), Поэтому, к сожалению, предлагаемые вами функции в настоящее время недоступны. Многие другие просили об этом, и это является частьюdrake цели будущего развития. Тем не менее, это самая большая проблема внедрения на сегодняшний день, и я не знаю, когда она станет доступной. map() и друзья могут быть на шаг ближе.

Другие вопросы по тегам