From hb at maths.lth.se  Thu Sep  1 16:31:58 2005
From: hb at maths.lth.se (Henrik Bengtsson)
Date: Thu, 01 Sep 2005 16:31:58 +0200
Subject: [Rd] generic function S3 consistency warning advice
In-Reply-To: <3128D6C1-B044-4CBF-8D7C-21A0B52D9904@soc.soton.ac.uk>
References: <3128D6C1-B044-4CBF-8D7C-21A0B52D9904@soc.soton.ac.uk>
Message-ID: <431710DE.5060803@maths.lth.se>

This happens because you get a primitive function. However, I believe 
Re() is already an generic function ("too") internally, so you do not 
have to create your own and redefine the default one.  (I'm not sure if 
there is another way to tell if a primitive function is also a generic 
function than to look at the C source code or by trial-and-error).

Try:

% R --vanilla
 > Re.MyClass <- function(x) NA
 > x <- structure(3, class="MyClass")
 > Re(5+3i)
5
 > Re(x)
NA

/Henrik

Robin Hankin wrote:
> Hi
> 
> section 6.1 of R-exts suggests that a package  can take over a  
> function in the base
> package and make it generic.
> 
> I want to do this with Re() and have the following lines in my R code:
> 
> 
> 
> "Re" <- function(x){UseMethod("Re" )}
> "Re.default" <- get("Re" ,pos=NULL,mode="function")
> "Re.octonion" <- function(x){give.comp(x,1)}
> 
> This, however, generates the following warning from R CMD check:
> 
> * checking S3 generic/method consistency ... WARNING
> Re:
>    function(x)
> Re.default:
>    function()
> 
> See section 'Generic functions and methods' of the 'Writing R  
> Extensions'
> manual.
> 
> 
> 
> I can suppress the warning by commenting out the first line.  Is this a
> sensible thing to do?
> 
> 
> 
> 
> --
> Robin Hankin
> Uncertainty Analyst
> National Oceanography Centre, Southampton
> European Way, Southampton SO14 3ZH, UK
>   tel  023-8059-7743
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
>



[Rd] generic function S3 consistency warning advice
Henrik Bengtsson