我想使用一个函数来创建德雷克计划。参见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问题。有人可以给一个友善的提示,以解决这个问题吗?
预先感谢!
答案 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创建