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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to