Could you point to one of these packages you refer to? I'm still having problems and not sure why at the moment.
Thanks On Mon, Jun 26, 2017 at 12:32 PM, Joris Meys <joris.m...@ugent.be> wrote: > Hi Charles, > > my mistake. I forgot that pmax has an extra argument na.rm. I'm surprised > you could define the method, as this normally should return an error from > conformMethod(). > > So: > #' @rdname pmax > setGeneric("pmax", signature = "...") > > should work. I've used this myself in quite a number of packages. > > Cheers > Joris > > On Mon, Jun 26, 2017 at 7:20 PM, Charles Determan <cdeterma...@gmail.com> > wrote: > >> Thanks for the reply Joris, although I am not sure what I could be doing >> wrong. I implement exactly the lines you show and yet I just get the >> following error when I call 'pmax' on the class. >> >> > pmax(x, 0) >> >> Error in mmm < each : >> comparison (3) is possible only for atomic and list types >> In addition: Warning message: >> In is.na(mmm) : is.na() applied to non-(list or vector) of type 'S4' >> >> Regards, >> Charles >> >> On Mon, Jun 26, 2017 at 12:10 PM, Joris Meys <joris.m...@ugent.be> wrote: >> >>> Hi Charles, >>> >>> if a generic exists already in the base, you only have to export the >>> actual S3 method. Your problem is that base::pmax() is not a generic S3 >>> function. So R gives you the correct warning: the S3 generic in your >>> package will always mask the base pmax function. And that's not really a >>> problem, especially since you ensured the base functionality with your >>> default method. >>> >>> If you want to avoid that warning, use S4. >>> >>> #' @rdname >>> setGeneric("pmax") >>> >>> #' @rdname pmax >>> #' @method pmax myclass >>> #' @export >>> setMethod("pmax", >>> "myclass", >>> function(...){ >>> # do some stuff >>> }) >>> >>> More information on how to deal with dots can be found on the help page >>> ?dotsMethods. >>> >>> If you have a generic in the base package (eg plot is such one), you >>> only define the method and use: >>> >>> #' @export >>> plot.myclass <- function(x, y, ...){ >>> # do some more stuff >>> } >>> >>> Cheers >>> Joris >>> >>> >>> >>> On Mon, Jun 26, 2017 at 6:28 PM, Charles Determan <cdeterma...@gmail.com >>> > wrote: >>> >>>> Greetings R users, >>>> >>>> I was wondering how others are exporting S3 methods in their packages >>>> when >>>> the generic is in 'base'. For example, let's say I want to export a new >>>> pmax method. The only way I have found to get this to work is by >>>> redefining the function with 'UseMethod' and setting the default method. >>>> >>>> #' @export >>>> pmax <- function(...){ UseMethod("pmax") } >>>> #' @export >>>> pmax.default <- function(..., na.rm=FALSE){ base::pmax(..., >>>> na.rm=FALSE) } >>>> >>>> setClass("myclass") >>>> >>>> #' @export >>>> pmax.myclass <- function(..., na.rm = FALSE){ >>>> print('myclass pmax!') >>>> } >>>> >>>> Although this works, I get the 'warning' >>>> >>>> The following objects are masked from 'package:base': >>>> >>>> pmax >>>> >>>> >>>> I would like the package build and loading to be as clean as possible >>>> but >>>> if this is acceptable and not considered a problem I will let it go. It >>>> just seems odd that one would to redefine a the generic when in states >>>> in >>>> the docs for 'pmax' that it will also work on classed S3 objects but >>>> perhaps I am reading this incorrectly. >>>> >>>> Thanks, >>>> Charles >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________________________ >>>> R-package-devel@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel >>>> >>> >>> >>> >>> -- >>> Joris Meys >>> Statistical consultant >>> >>> Ghent University >>> Faculty of Bioscience Engineering >>> Department of Mathematical Modelling, Statistics and Bio-Informatics >>> >>> tel : +32 9 264 59 87 <+32%209%20264%2059%2087> >>> joris.m...@ugent.be >>> ------------------------------- >>> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php >>> >> >> > > > -- > Joris Meys > Statistical consultant > > Ghent University > Faculty of Bioscience Engineering > Department of Mathematical Modelling, Statistics and Bio-Informatics > > tel : +32 9 264 59 87 <+32%209%20264%2059%2087> > joris.m...@ugent.be > ------------------------------- > Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php > [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel