如何在功能中创建计划

时间:2020-06-01 21:06:01

标签: drake-r-package

我想使用一个函数来创建德雷克计划。参见MWE:

plan_func <- function(param) {
  drake::drake_plan(
    myparam = param
  )
}

我想要

plan_func("a")

给予

# A tibble: 1 x 2
  target  command   
  <chr>   <expr_lst>
1 myparam "a"

但是,它给出了

> plan_func("a")
# A tibble: 1 x 2
  target  command   
  <chr>   <expr_lst>
1 myparam param     

感觉这是一个NSE问题。有人可以给一个友善的提示,以解决这个问题吗?

预先感谢!

1 个答案:

答案 0 :(得分:1)

drake_plan()支持tidy evaluation,因此您可以在计划中编写!!param

library(drake)
plan_func <- function(param) {
  drake::drake_plan(
    myparam = !!param
  )
}
plan_func("a")
#> # A tibble: 1 x 2
#>   target  command   
#>   <chr>   <expr_lst>
#> 1 myparam "a"

reprex package(v0.3.0)于2020-06-02创建

https://github.com/ropensci/drake/issues/1251这样的棘手情况可能需要您关闭tidy_eval的{​​{1}}和transform自变量。

编辑

要将多个参数拼接到函数中,请使用Triple-bang(!!!)而不是bang-bang(!!):

drake_plan()

reprex package(v0.3.0)于2020-06-02创建