[R] signif() generic

Paul Roebuck roebuck at odin.mdacc.tmc.edu
Wed Jan 19 16:38:00 CET 2005


On Wed, 19 Jan 2005 ockham at gmx.net wrote:

> I'm trying to write a class for Gaussian error propagation of measured
> values and their (estimated) errors,
>
> > setClass("sec", representation(val="numeric", err="numeric"))
>
> I've already successfully implemented basic arithmetics using mostly the
> "Arith" group generics. But I'm running into trouble when trying to get
> signif() to work for my purposes, i.e. with a default argument
> (digits=2): When trying
>
> > seMethod("signif", signature(x="sec", digits="numeric")),
> 	function(x, digits=2){
> 	# ...do something...
> 	}
> )
>
> and
>
> > signif(sec1)
>
> I get
>
> > Error in signif(x, digits) : Non-numeric argument to mathematical
> function
>
> Putting a second argument (like digits=2) into the call makes it work,
> but I want some default behavior specified for missing digits argument
> so it works in an analogous fashion as signif for numeric values.
> I also tried inserting
>
> > setGeneric("signif", function(x, digits=6) standardGeneric("signif"))
>
> before the setMethod block, but that wouldn't help either.


setGeneric("signif", function(x, digits=6) standardGeneric("signif"))
setMethod("signif", signature(x="sec", digits="numeric"),
    function(x, digits) {
        # ...do something...
        print(x)
        print(digits)
    }
)

setMethod("signif", signature(x="sec", digits="missing"),
    function(x, digits) {
        callGeneric(x, digits)
    }
)

The missing data method will cause the default value (6) to
be passed to the numeric data method.

> signif(new("sec"))
An object of class "sec"
   ...
[1] 6
>

----------------------------------------------------------
SIGSIG -- signature too long (core dumped)




More information about the R-help mailing list