John, Thanks very much. As you suggested, this turned out not to have anything to do with R-devel. Instead, it seemed traceable to my decision a while back to start require()'ing packages in my .Rprofile, at least when I removed .Rprofile then my original code for image methods worked fine in the current version of R-devel. "Ours not to reason why..."
Roger url: www.econ.uiuc.edu/~roger Roger Koenker email rkoen...@uiuc.edu Department of Economics vox: 217-333-4558 University of Illinois fax: 217-244-6678 Urbana, IL 61801 On Jul 11, 2014, at 8:35 PM, John Chambers <j...@r-project.org> wrote: > Roger, > > Are you implying that your current code works differently under R-devel than > with the current release? Nothing I'm aware of would suggest that. > > With or without setGeneric() (in either version but the single-argument is > cleaner), a generic function for image() is created in your package's > namespace. > > If you don't export that function, calls from other functions in your package > will still get the generic version but calls from outside the package will > get graphics::image. > > Here's an example. In my PkgA I have: > > setGeneric("image") > > setMethod("image", "A", function(x, ...) message("dummy image for class > A")) > > showStuff <- function() showMethods("image") > > In the NAMESPACE, I exported showStuff, but not image. > > As a result: > >> require(PkgA) > Loading required package: PkgA >> image > function (x, ...) > UseMethod("image") > <bytecode: 0x7fa835170b08> > <environment: namespace:graphics> >> showMethods("image") > > Function "image": > <not an S4 generic function> >> showStuff > function () > showMethods("image") > <environment: namespace:PkgA> >> showStuff() > Function: image (package graphics) > x="A" > x="ANY" > > The methods are visible to code inside PkgA but others see only the S3 > function. > > John > > > On Jul 11, 2014, at 11:27 AM, Roger Koenker <rkoen...@illinois.edu> wrote: > >> I've installed R-devel >> >> R Under development (unstable) (2014-07-09 r66111) >> Platform: x86_64-apple-darwin13.1.0 (64-bit) >> >> and am trying to resolve some problems that I am seeing with my >> SparseM package. In prior versions I explicitly had: >> >> setGeneric("image", function(x, ...) standardGeneric("image")) >> >> and then used setMethod to define a method for the class matrix.csr >> but my reading of the setGeneric manpage suggests that this call to >> setGeneric need not, and probably should not have this second >> argument, and indeed, need not exist at all, since the generic is >> automatically created by the setMethod invocation. >> >> However, what is puzzling to me is that in my new R-devel version >> none of these options have the intended effect of making "image" >> a generic and allowing R to dispatch for matrix.csr objects. When >> I omit the setGeneric() call, I do get a message at INSTALL time >> that a generic for image is being created, but then after loading >> SparseM: >> >>> showMethods(image) >> Function "image": >> <not an S4 generic function> >> >> On the command line, I can make this work: >> >>> setGeneric("image") >> [1] "image" >>> showMethods(image) >> Function: image (package graphics) >> x="ANY" >> x="matrix.csr" >> >> And -- even more irritating -- if I require(Matrix) then the generic >> is created together with my method and all the Matrix methods. At >> the risk of theorizing without data, I suspect that this has something >> to do with NAMESPACES, and I have tried to follow the setup for >> Matrix by having: >> >> importFrom("graphics", image) >> exportMethods("image") >> >> but clearly I'm still missing some crucial aspect. Any suggestions >> would be most welcome. >> >> Roger >> >> >> >> url: www.econ.uiuc.edu/~roger Roger Koenker >> email rkoen...@uiuc.edu Department of Economics >> vox: 217-333-4558 University of Illinois >> fax: 217-244-6678 Urbana, IL 61801 >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel