[R] R CMD check: no visible binding for global variable
Rolf Turner
rolf.turner at xtra.co.nz
Tue May 17 01:16:20 CEST 2011
On 17/05/11 06:05, swaraj basu wrote:
> Dear All,
> I have built a package which has a data.frame "annotIndex.rda
> in its "data" folder.
> I am using this data frame within two functions in my package.
>
> Though my package works fine, yet when I do a
> R CMD check
>
> to my package I get the following two notes
>
> get.affy.ensembl: no visible binding for global variable
> ‘annotIndex’
> get.affy.id: no visible binding for global variable
> ‘annotIndex’
>
> I need help in understanding these notes, and how can I avoid
> them.
This may be a case of the blind leading the blind, but here goes.
Understanding is simple (I think!). You are referring to an object
"annotIndex"
inside a function, as in
foo <- function(x) {
x + annotIndex # Don't worry about the fact that this doesn't make sense!
}
When the package checker looks at this it says "Hmmmm, annotIndex has never
been defined (inside "foo") so it might not exist. There *could* be a
problem here."
What to do about it: One solution is just to ignore the note; it's only
a note,
not an error, nor even a warning, and you know that there isn't actually
a problem.
The solution that is often suggested --- see
RSiteSearch("{no visible binding}",restrict=c("Rhelp02","Rhelp08"))
of assigning annotIndex a value, e.g. annotIndex <- NULL, at the beginning
of your function doesn't work here since that local NULL value will
over-ride the
global value that you really want.
You might try (the appropriate analogue of) x +
get("annotIndex",envir=.GlobalEnv).
That should satisfy the package checker. (I haven't tested it, but.)
Dunno if this has an adverse impact on the efficiency of your code.
HTH
cheers,
Rolf Turner
More information about the R-help
mailing list