Пакеты, использующие 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.
Не обязательно игнорировать; некоторые пакеты отклоняются, и CRAN говорит авторам использовать globalVariables
для подавления ПРИМЕЧАНИЙ. Например:
Привет,
это старая проблема, но не закрытая. Мне было интересно, есть ли теперь новое решение?
В противном случае, какой хорошей практике следует следовать? все еще globalVariables
?
мне нравится идея
функция, которая обнаруживает эти символы и создает
globalVariables()
Спасибо.
@cderv вы можете просто присвоить переменной NULL перед ее использованием (не путайте с переопределением). Таким образом, вы не определяете глобальные переменные, а просто определяете их локально в функции, в которой вы их используете. Я не думаю, что нам нужно решать это каким-то особым образом. Закрытие на данный момент, поскольку проблема ждет 2 года без определенных точек действия и на самом деле не является проблемой data.table.
Самый полезный комментарий
@cderv вы можете просто присвоить переменной NULL перед ее использованием (не путайте с переопределением). Таким образом, вы не определяете глобальные переменные, а просто определяете их локально в функции, в которой вы их используете. Я не думаю, что нам нужно решать это каким-то особым образом. Закрытие на данный момент, поскольку проблема ждет 2 года без определенных точек действия и на самом деле не является проблемой data.table.