Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No visible binding for global variable Note in R CMD check

Tags:

package

r

I noticed in checking a package that I obtain notes "no visible binding for global variable" when I use functions like subset that use verbatim names of list elements as arguments.

For example with a data frame:

foo <- data.frame(a=c(TRUE,FALSE,TRUE),b=1:3)

I can do silly things like:

subset(foo,a) transform(foo,a=b) 

Which work as expected. The R code check in R CMD however doesn't understand that these refer to elements and complains about there not being any visible bindings of global variables.

While this works ok, I don't really like having notes in my package and prefer for it to pass the check with no errors, warnings and notes at all. I also don't really want to rework my code too much. Is there a way to write these codes so that it is clear the arguments do not refer to global variables?

like image 926
Sacha Epskamp Avatar asked Nov 11 '11 15:11

Sacha Epskamp


People also ask

Does R have global variables?

Overview. Global variables in R are variables created outside a given function. A global variable can also be used both inside and outside a function.


1 Answers

To get it past R CMD check you can either :

  • Use get("b") (but that is onerous)
  • Place a=b=NULL somewhere higher up in your function (that's what I do)

There was a thread on r-devel a while ago where somebody from r-core basically said (from memory) "NOTES are ok, you know. The assumption is that the author checked it and is ok with the NOTE.". But, I agree with you. I do prefer to have CRAN checks return a clean "OK" on all platforms. That way the user is left in no doubt that it passes checks ok.

EDIT :

Here is the r-devel thread I was remembering (from April 2010). So that appears to suggest that there are some situations where there is no known way to avoid the NOTE, but that's ok.

like image 51
Matt Dowle Avatar answered Sep 20 '22 19:09

Matt Dowle