Pacotes - como lidar com notes

Olá, tudo bem?
Qual a melhor forma de lidar com o NOTE no visible binding for global variable na função devtools::check()?

Vi que existem diferentes soluções para isso, mas não sei o que seria melhor no contexto de boas práticas.

1 curtida

Oi Leandro @lmendonca!

Segue um recorte do slide da aula 2 do curso de pacotes:

https://curso-r.github.io/main-pacotes/slides/index.html#53

Variáveis globais são normalmente uma má prática em código R, então a devtools::check() vai reclamar se encontrar algo do tipo; o problema é que as colunas modificadas em funções do {dplyr} são caracterizadas como globais.

  • A solução é criar um arquivo na pasta R/ com uma linha como a abaixo contendo todas as variáveis que fizerem a devtools::check()reclamar
utils::globalVariables(c("variavel1", "variavel2"))
1 curtida

Entendi, muito obrigado Beatriz

No caso de serem muitas variáveis, não haveria algo ‘menos manual’ que poderia ser feito? Vi algo sobre talvez criar as funções declarando os argumentos de forma que já sejam entendidos como globais, mas não me pareceu muito sofisticado, e sim uma tentativa de enganar o devtools::check(), fazendo com que elas existam como NULL. No visible binding for global variable | R-bloggers see Option two

Nesse mesmo link fala sobre usar .data pronoun no caso de funções do tydiverse. Eu fiz isso, mas ai o devtools::check() reclama da variável .data :confused: :roll_eyes:

Resumindo aqui a resposta que demos em aula: a sugestão menos manual é usar o .data e depois declará-lo como global. Na minha opinião, essa “option two” não é legal.