Data.table: R Проверка CMD ПРИМЕЧАНИЕ. Нет видимой привязки для глобальной переменной.

Созданный на 2 окт. 2014  ·  3Комментарии  ·  Источник: Rdatatable/data.table

Пакеты, использующие data.table (и я думаю, что dplyr тоже), получают это ПРИМЕЧАНИЕ (возможно, многие) из проверки R CMD. Можем ли мы что-нибудь сделать? Это всего лишь ПРИМЕЧАНИЕ, поэтому его можно игнорировать, но даже в этом случае.

Возможно, предоставьте функцию, которая обнаруживает эти символы и автоматически создает вызов globalVariables() для автора пакета.

http://stackoverflow.com/questions/15409806/r-package-compilation-with-dependency-on-data-table
http://stackoverflow.com/questions/8096313/no-visible-binding-for-global-variable-note-in-r-cmd-check

IIUC, ему потребуется изменить «R CMD check», чтобы он знал о «нестандартной оценке», которую используют как data.table, так и dplyr. Это сложная задача (возможно, даже невозможная без запуска кода). Таким образом, функции ?globalVariables были добавлены в R в версии 2.15.1, и, возможно, менее известно, что в R 3.1.0 была добавлена ​​функция $ ?dontCheck , которую можно использовать для переноса запросов с использованием NSE. Это лучше, чем <-NULL , которые могут заглушить истинные ошибки (или, возможно, создать новые) в других областях кода, а также в тех, которые используют NSE.

Самый полезный комментарий

@cderv вы можете просто присвоить переменной NULL перед ее использованием (не путайте с переопределением). Таким образом, вы не определяете глобальные переменные, а просто определяете их локально в функции, в которой вы их используете. Я не думаю, что нам нужно решать это каким-то особым образом. Закрытие на данный момент, поскольку проблема ждет 2 года без определенных точек действия и на самом деле не является проблемой data.table.

Все 3 Комментарий

Не обязательно игнорировать; некоторые пакеты отклоняются, и CRAN говорит авторам использовать globalVariables для подавления ПРИМЕЧАНИЙ. Например:

http://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when#comment20826625_12429344

Привет,
это старая проблема, но не закрытая. Мне было интересно, есть ли теперь новое решение?
В противном случае, какой хорошей практике следует следовать? все еще globalVariables ?

мне нравится идея

функция, которая обнаруживает эти символы и создает globalVariables()

Спасибо.

@cderv вы можете просто присвоить переменной NULL перед ее использованием (не путайте с переопределением). Таким образом, вы не определяете глобальные переменные, а просто определяете их локально в функции, в которой вы их используете. Я не думаю, что нам нужно решать это каким-то особым образом. Закрытие на данный момент, поскольку проблема ждет 2 года без определенных точек действия и на самом деле не является проблемой data.table.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги