如何通过在软件包中创建Drake计划的函数来管理全局变量警告?

问题描述 投票:0回答:1

我创建了一个软件包,用于使用{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$代词修复了所有其他未定义的全局变量。我只剩下这些警告,而且我不知道该怎么办(除了忍受它之外)。

r r-package drake-r-package
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.