.Renviron становится перезаписанным globalVariables - PullRequest
3 голосов
/ 13 июня 2019

Допустим, у меня есть функция в моем пакете

my_fn <- function() {
  mtcars_dt <- data.table::data.table(mtcars)
  mtcars_dt[, mpg_div_hp := mpg / hp]
  mtcars_dt
}

В моем .Renviron у меня есть настройка _R_CHECK_CODETOOLS_PROFILE_="suppressUndefined=TRUE".Это гарантирует, что при запуске пакета codetools во время R CMD check он не будет возвращать никаких предупреждений, таких как

my_fn: no visible binding for global variable 'mpg_div_hp'

Однако, если я определил некоторые глобальные переменные, такие как

utils::globalVariables(c("mpg", "hp"))

в документации к моему пакету R CMD check идентифицирует все переменные как несвязанные.Это почти как если бы функция globalVariables() перезаписывала опцию "suppressUndefined=TRUE" в моем файле .Renviron.

Мой вопрос: почему это происходит?Для получения дополнительной информации, пожалуйста, читайте дальше.

По-видимому, есть два "простых" решения:

  1. Не определяйте никакие переменные в моем файле package.R и разрешите параметр codetoolsобрабатывать их все.
  2. Определить все глобальные переменные в функции globalVariables() и не использовать опцию codetools.

К сожалению, первая опция не подходит, есливы хотите использовать пакет lintr, так как lintr проверяет только RHS части mpg_div_hp := mpg / hp функции.Поэтому включение переменных "mpg" и "hp" в функцию globalVariables - вот почему я столкнулся с этой проблемой.Конечно, я могу использовать опцию object_usage_linter=NULL для lintr, но это неудовлетворительно.Второй вариант потребует вектора из> 1000 переменных, что не похоже на хорошее решение.

...