Data.table: R CMD check NOTA: Nenhuma ligação visível para variável global

Criado em 2 out. 2014  ·  3Comentários  ·  Fonte: Rdatatable/data.table

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.

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.

Todos 3 comentários

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:

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

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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

franknarf1 picture franknarf1  ·  3Comentários

symbalex picture symbalex  ·  3Comentários

tcederquist picture tcederquist  ·  3Comentários

alex46015 picture alex46015  ·  3Comentários

sengoku93 picture sengoku93  ·  3Comentários