我创建了一个软件包,用于使用{drake}组织文件以进行分析工作流程。一个功能创建了Drake计划。在_drake.R
中调用此函数以使用r_make()
运行分析。到目前为止一切正常,我可以在函数参数中更改一些路径和参数,并创建一个新的运行计划。
这里是示例代码
library(drake)
library(readr)
test_fn_plan <- function(paths, countries) {
drake_plan(
data = target(
read_tsv(file_in(path)),
transform = map(path = !!paths, country = !!countries, .id = country)
)
)
}
test_fn_plan(
c("path/to/data_IE.tsv", "path/to/data_UK.tsv"),
c("Ireland", "United Kingdom")
)
#> # A tibble: 2 x 2
#> target command
#> <chr> <expr>
#> 1 data_Ireland read_tsv(file_in("path/to/data_IE.tsv"))
#> 2 data_United.Kingdom read_tsv(file_in("path/to/data_UK.tsv"))
由reprex package(v0.3.0)在2019-10-29创建
问题来自devtools::check()
。计划步骤被视为全局变量,未定义的全局变量,我不知道如何处理它们。
我收到以下警告(在我的实际代码上为数十个)
test_fn_plan: no visible binding for global variable ‘path’
test_fn_plan: no visible binding for global variable ‘country’
我已经用rlang的.data$
代词修复了所有其他未定义的全局变量。我只剩下这些警告,而且我不知道该怎么办(除了忍受它之外)。
从this post发来,看来您可以在包裹中的某个地方打电话给globalVariables()
,这很好。包源中可能是这样的吗?
test_fn_plan <- function(paths, countries) {
drake_plan(
data = target(
read_tsv(file_in(path)),
transform = map(path = !!paths, country = !!countries, .id = country)
)
)
}
plan <- test_fn_plan()
utils::globalVariables(plan$target)