Hi John, It's possible that I didn’t follow what you did, but it appears as if you call globalVariables() *inside* the function. Instead try to do as Richard Heiberger suggested and place the call outside of the function, e.g., in a source file in the package R directory named globals.R. (Of course, the name of the source file containing the command isn’t important.)
I hope this helps, John ----------------------------------------------------------------- John Fox Professor Emeritus McMaster University Hamilton, Ontario, Canada Web: https://socialsciences.mcmaster.ca/jfox/ > -----Original Message----- > From: R-package-devel [mailto:r-package-devel-boun...@r-project.org] On > Behalf Of J C Nash > Sent: Monday, August 27, 2018 8:44 PM > To: Richard M. Heiberger <r...@temple.edu> > Cc: List r-package-devel <r-package-devel@r-project.org> > Subject: Re: [R-pkg-devel] Trying to work around missing functionality > > Unfortunately, makes things much worse. I'd tried something like this already. > > > * checking examples ... ERROR > > Running examples in ‘rootoned-Ex.R’ failed The error most likely > > occurred in: > > > >> ### Name: rootwrap > >> ### Title: zeroin: Find a single root of a function of one variable within > >> ### a specified interval. > >> ### Aliases: rootwrap > >> ### Keywords: root-finding > >> > >> ### ** Examples > >> > >> # Dekker example > >> # require(rootoned) > >> dek <- function(x){ 1/(x-3) - 6 } > >> r1 <- rootwrap(dek, ri=c(3.0000001, 6), ftrace=TRUE, > >> method="uniroot") > > Error in registerNames(names, package, ".__global__", add) : > > The namespace for package "rootoned" is locked; no changes in the global > variables list may be made. > > Calls: rootwrap -> TraceSetup -> <Anonymous> -> registerNames > > Execution halted > > Also had to use utils::globalVariables( ... > > JN > > > On 2018-08-27 08:40 PM, Richard M. Heiberger wrote: > > Does this solve the problem? > > > > if (getRversion() >= '2.15.1') > > globalVariables(c('envroot')) > > > > I keep this in file R/globals.R > > > > I learned of this from John Fox's use in Rcmdr. > > > > On Mon, Aug 27, 2018 at 8:28 PM, J C Nash <profjcn...@gmail.com> > wrote: > >> In order to track progress of a variety of rootfinding or > >> optimization routines that don't report some information I want, I'm > >> using the following setup (this one for rootfinding). > >> > >> TraceSetup <- function(ifn=0, igr=0, ftrace=FALSE, fn=NA, gr=NA){ # > >> JN: Define globals here > >> groot<-list(ifn=ifn, igr=igr, ftrace=ftrace, fn=fn, gr=gr, label="none") > >> envroot <<- list2env(groot) # Note globals in FnTrace > >> ## This generates a NOTE that > >> ## TraceSetup: no visible binding for '<<-' assignment to ‘envroot’ > >> ## envroot<-list2env(groot, parent=.GlobalEnv) # Note globals in FnTrace > >> - > - this does NOT work > >> ## utils::globalVariables("envroot") # Try declaring here -- > >> causes errors # end globals > >> envroot > >> } > >> > >> FnTrace <- function(x,...) { > >> # Substitute function to call when rootfinding > >> # Evaluate fn(x, ...) > >> val <- envroot$fn(x, ...) > >> envroot$ifn <- envroot$ifn + 1 # probably more efficient ways > >> if (envroot$ftrace) { > >> cat("f(",x,")=",val," after ",envroot$ifn," ",envroot$label,"\n") > >> } > >> val > >> } > >> > >> > >> Perhaps there are better ways to do this, but this does seem to work quite > well. > >> It lets me call a rootfinder with FnTrace and get information on > >> evaluations > of fn(). > >> (There's another gr() routine, suppressed here.) > >> > >> However, R CMD check gives a NOTE for > >> > >> TraceSetup: no visible binding for global variable ‘envroot’ > >> Undefined global functions or variables: > >> envroot > >> > >> The commented lines in TraceSetup suggest some of the things I've > >> tried. Clearly I don't fully comprehend how R is grinding up the > >> code, but searches on the net seem to indicate I am far from alone. Does > anyone have any suggestion of a clean way to avoid the NOTE? > >> > >> JN > >> > >> ______________________________________________ > >> R-package-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-package-devel > > ______________________________________________ > R-package-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-package-devel ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel