[R-pkg-devel] Visible bindings and reference classes
William Dunlap
wdunlap at tibco.com
Tue Aug 11 17:47:23 CEST 2015
This is a problem in the compiler package. Here is a way to reproduce it:
def <- quote(Config <- setRefClass("Config",
fields = list(
ConfigString = "character"),
methods = list(
# Constructor
initialize = function() {
ConfigString <<- "Hello, World!"
})
))
dput(def, file= (tf <- tempfile()))
compiler::cmpfile(tf)
#Note: no visible binding for '<<-' assignment to 'ConfigString'
saving to file
#"C:\Users\wdunlap\AppData\Local\Temp\Rtmpk91qvT\file26d447c45b81.Rc" ...
done
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Tue, Aug 11, 2015 at 4:24 AM, Martin Maechler <maechler at stat.math.ethz.ch
> wrote:
> >>>>> Colin Gillespie <csgillespie at gmail.com>
> >>>>> on Mon, 10 Aug 2015 20:33:32 +0000 writes:
>
> > Dear All,
> >
> > I have a package that uses reference classes. When I build the package I
> > get numerous notes of the sort
> >
> > Note: no visible binding for '<<-' assignment to 'pars'
> >
> > I've tried using GlobalVariables, but that didn't solve the issue.
>
> [ You mean globalVariables(): and it's a bad idea anyway IMO,
> even if it is recommended : If you declare a variable in
> there, it is "global" in all places in your package and the
> codetools won't report it anywhere anymore.
> Much better in my view is to use something like
>
> var7 <- NULL # ~= globalVariables("var7")
>
> ]
>
> To your question:
>
> Reference classes are used in *many* places, and the use of ' <<- '
> is really "standard" there.
> e.g., package 'lme4', or 'pcalg' are two packages I'm involved with,
> which use ref.classes and ' <<- ' but are "fine" with that.
>
> So there must be something peculiar in your package leading to
> the <<- warnings.
>
> Maybe you should look into the source code of such other CRAN
> packages to see how "they" do it differently than you.
>
> Best regards,
> Martin
>
> Martin Maechler, ETH Zurich
>
>
> > After some googling, I came across the page
> > http://stackoverflow.com/q/23475309/203420 which suggests
> >
> > suppressBindingNotes <- function(variablesMentionedInNotes) {
> > for(variable in variablesMentionedInNotes) {
> > assign(variable,NULL, envir = .GlobalEnv)
> > }
> > }
> > suppressBindingNotes(c("dat", "internal", "xmin", "pars", "no_pars"))
> >
> > But checking the package with --as-cran raises the note
> >
> > * checking R code for possible problems ... NOTE
> > Found the following assignments to the global environment:
> > File ‘poweRlaw/R/aaa_all_classes.R’:
> > assign(variable, NULL, envir = .GlobalEnv)
> >
> > What is the correct way of removing the "visible bindings" notes?
> >
> > Thanks
> >
> > Colin
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-package-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
> ______________________________________________
> R-package-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
[[alternative HTML version deleted]]
More information about the R-package-devel
mailing list