внутри функции пакета выдает предупреждение об отсутствии видимых привязок - PullRequest
0 голосов
/ 23 июня 2019

Использование witin внутри функции в пакете принудительно возвращает предупреждение о R CMD check.

reprex

Функция:

# Test within

hello <- function(x = data.frame(valA = 1, valB = 2)) {
  within(data = x,
         expr = {
             res = valA + valB
         })
}

выдаст следующие предупреждения на R CMD check:

❯ checking R code for possible problems ... NOTE
  hello: no visible binding for global variable ‘valA’
  hello: no visible binding for global variable ‘valB’
  Undefined global functions or variables:
    valA valB

Обходной путь (решение)

Добавление valA <- valB <- NULL отключит предупреждение.

hello <- function(x = data.frame(valA = 1, valB = 2)) {
    valA <- valB <- NULL

  within(data = x,
         expr = {
             res = valA + valB
         })
}

Вопрос

Этот махинации с valA <- valB <- NULL мне не нравятся. Как правильно подходить к этой ситуации?

Я хочу использовать within, так как функция хорошо подходит для более широкого дизайна функций. Как правильно заставить замолчать предупреждение. Я наткнулся на аналогичное обсуждение на GitHub, в котором предлагается использовать with в несколько ином случае.

1 Ответ

1 голос
/ 23 июня 2019

Одним из решений является включение globalVariables(c('valA', 'valB')) где-то в пакете, например, в отдельный файл .R в папке R.

В противном случае я бы сделал:

hello <- function(valA = 1, valB = 2) {

  within(data = data.frame(valA, valB),
         expr = {
           res = valA + valB
         })
}
...