Как управлять предупреждениями о глобальных переменных из функции, которая создает план Дрейка в пакете? - PullRequest
0 голосов
/ 29 октября 2019

Я создал пакет для организации моих файлов для рабочего процесса анализа с помощью {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"))

Создано в 2019-10-29 пакетом Представления (v0.3.0)

Проблема связана с devtools::check(). Шаги плана рассматриваются как глобальные переменные, неопределенные глобальные переменные, и я не знаю, как с ними обращаться.

Я получаю следующие предупреждения (десятки на моем реальном коде)

  test_fn_plan: no visible binding for global variable ‘path’
  test_fn_plan: no visible binding for global variable ‘country’

Я уже исправил все остальные неопределенные глобальные переменные с помощью местоимения .data$ Рланга. Я остался с этими предупреждениями и не знаю, что делать (кроме как жить с этим).

1 Ответ

0 голосов
/ 29 октября 2019

Из этого поста , похоже, вы можете позвонить 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)
...