Data.table: R Comprobación de CMD NOTA: No hay enlace visible para la variable global

Creado en 2 oct. 2014  ·  3Comentarios  ·  Fuente: Rdatatable/data.table

Los paquetes que usan data.table (y creo que también dplyr) obtienen esta NOTA (quizás muchas) de R CMD check. ¿Hay algo que podamos hacer? Es solo una NOTA, por lo que puede ignorarse, pero aun así.

Quizás proporcione una función que detecte esos símbolos y cree la llamada globalVariables() automáticamente para el autor del paquete.

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, necesitaría un cambio a 'R CMD check' para que sea consciente de la "evaluación no estándar" que usan data.table y dplyr. Ese es un problema difícil (quizás incluso imposible sin ejecutar el código). Entonces, las funciones ?globalVariables se agregaron a R en 2.15.1 y quizás menos conocido es que ?dontCheck se agregó en R 3.1.0, que se puede usar para envolver consultas usando NSE. Estos son mejores que <-NULL que tiene el riesgo de silenciar errores verdaderos (o quizás crear otros nuevos) en otras áreas del código, así como en las que usan NSE.

Comentario más útil

@cderv puede simplemente asignar NULL a la variable antes de usarla (no confundir con anularla). Entonces, no está definiendo variables globales, sino simplemente definiéndolas localmente en una función donde las está usando. No creo que debamos abordar eso de ninguna manera especial. Cerrando por ahora ya que el problema está esperando 2 años sin puntos de acción definidos, y no es realmente un problema de tabla de datos.

Todos 3 comentarios

No necesariamente se puede ignorar; algunos paquetes están siendo rechazados y CRAN les dice a los autores que usen globalVariables para suprimir las NOTAS. P.ej:

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

Hola,
es un tema viejo pero no cerrado. Me preguntaba si ahora hay una nueva solución.
De lo contrario, ¿cuál es la buena práctica a seguir? todavía globalVariables ?

me gusta la idea de

una función que detecta esos símbolos y crea el globalVariables()

Gracias.

@cderv puede simplemente asignar NULL a la variable antes de usarla (no confundir con anularla). Entonces, no está definiendo variables globales, sino simplemente definiéndolas localmente en una función donde las está usando. No creo que debamos abordar eso de ninguna manera especial. Cerrando por ahora ya que el problema está esperando 2 años sin puntos de acción definidos, y no es realmente un problema de tabla de datos.

¿Fue útil esta página
0 / 5 - 0 calificaciones