[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