1

drake手册给出了使用动态子目标的以下示例:

https://books.ropensci.org/drake/dynamic.html#dynamic-transformations

library(gapminder)
library(drake)

plan <- drake_plan(
  subset = head(gapminder),
  row = target(subset, dynamic = map(subset))
)

make(plan)
#> ▶ target subset
#> ▶ dynamic row
#> > subtarget row_9939cae3
#> > subtarget row_e8047114
#> > subtarget row_2ef3db10
#> > subtarget row_f9171bbe
#> > subtarget row_7d6002e9
#> > subtarget row_509468b3
#> ■ finalize row

reprex 包(v0.3.0)于 2020 年 9 月 2 日创建

现在让我们说由于某种原因,一个或多个这些子目标失败,例如row_9939cae3。我想调查其原因,为此我需要知道输入目标函数的确切参数。我如何获得该数据的副本?

我在这里先向您的帮助表示感谢。

标记

4

1 回答 1

1

不幸的是,drake这并不容易,但它是可能的。我建议将失败的子目标放入交互式调试器中。例如,假设row_f9171bbe失败。在您的一个自定义函数中,您可以使用cancel_if()andid_chr()直接跳转到row_f9171bbe然后立即运行browser()

library(gapminder)
library(drake)
f <- function(x) {
  cancel_if(id_chr() != "row_f9171bbe")
  browser()
  x
}
plan <- drake_plan(
  subset = head(gapminder),
  row = target(f(subset), dynamic = map(subset))
)
make(plan, targets = "row")
#> ▶ target subset
#> ▶ dynamic row
#> > subtarget row_9939cae3
#> ■ cancel row_9939cae3
#> > subtarget row_e8047114
#> ■ cancel row_e8047114
#> > subtarget row_2ef3db10
#> ■ cancel row_2ef3db10
#> > subtarget row_f9171bbe
#> Called from: f(subset)
Browse[1]> print(x)
#> # A tibble: 1 x 6
#>   country     continent  year lifeExp      pop gdpPercap
#>   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
#> 1 Afghanistan Asia       1967    34.0 11537966      836.
于 2020-09-02T13:30:38.697 回答