Pacotes usando data.table (e acredito que dplyr também) obtêm esta NOTA (talvez muitas) do R CMD check. Há algo que possamos fazer? É apenas uma NOTA, portanto, pode ser ignorada, mas mesmo assim.
Talvez forneça uma função que detecte esses símbolos e crie a chamada globalVariables()
automaticamente para o autor do pacote.
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, precisaria de uma mudança para 'R CMD check' para torná-lo ciente da "avaliação não padrão" que data.table e dplyr usam. Esse é um problema difícil (talvez até impossível sem executar o código). Assim, as funções ?globalVariables
foram adicionadas ao R em 2.15.1 e menos conhecido talvez seja que ?dontCheck
foi adicionado no R 3.1.0, que pode ser usado para agrupar consultas usando NSE. Estes são melhores do que <-NULL
que tem o risco de silenciar erros verdadeiros (ou talvez criar novos) em outras áreas do código, bem como aquelas que usam NSE.
Não pode ser necessariamente ignorado; alguns pacotes estão sendo rejeitados, e os autores estão sendo instruídos pelo CRAN a usar globalVariables
para suprimir as notas. Por exemplo:
Oi,
é uma questão antiga, mas não encerrada. Eu queria saber se existe agora uma nova solução?
Caso contrário, qual é a boa prática a seguir? ainda globalVariables
?
eu gosto da ideia de
uma função que detecta esses símbolos e cria o
globalVariables()
Obrigada.
@cderv você pode simplesmente atribuir NULL à variável antes de usá-la (não confunda com override). Então você não está definindo variáveis globais, mas apenas definindo-as localmente em uma função onde você as está usando. Acho que não precisamos abordar isso de maneira especial. Fechando por enquanto, pois o problema está aguardando 2 anos sem pontos de ação definidos e não é realmente um problema de data.table.
Comentários muito úteis
@cderv você pode simplesmente atribuir NULL à variável antes de usá-la (não confunda com override). Então você não está definindo variáveis globais, mas apenas definindo-as localmente em uma função onde você as está usando. Acho que não precisamos abordar isso de maneira especial. Fechando por enquanto, pois o problema está aguardando 2 anos sem pontos de ação definidos e não é realmente um problema de data.table.