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

Reply via email to