[R] Additional arguments in S3 method produces a warning

Henrik Bengtsson hb at maths.lth.se
Thu Mar 16 07:48:49 CET 2006


It is even better/more generic(!) to have:

  extract <- function(...) UseMethod("extract")

"Specifying the object argument or the method arguments of a generic
function will restrict any other methods with the same name to have
the same argument. By also excluding the object argument, default
functions such as search() will also be called if the generic function
is called without any arguments."
[http://www.maths.lth.se/help/R/RCC/]

/Henrik

On 3/15/06, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> Define extract like this:
>
> extract <- function(e, n, ...) UseMethod("extract")
>
> # test -- no warning
> extract(tp, no.tp = FALSE, peak = TRUE, pit = FALSE)
>
> On 3/15/06, Philippe Grosjean <phgrosjean at sciviews.org> wrote:
> > Hello,
> > I just notice this:
> >  > x <- c(1:4,0:5, 4, 11)
> >  > library(pastecs)
> > Loading required package: boot
> >  > tp <- turnpoints(x)
> >  > extract(tp, no.tp = FALSE, peak = TRUE, pit = FALSE)
> >  [1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
> > FALSE
> > Warning message:
> > arguments after the first two are ignored in: UseMethod("extract", e, n,
> > ...)
> >  > extract(tp)
> >  [1]  0  0  0  1 -1  0  0  0  0  1 -1  0
> > Warning message:
> > arguments after the first two are ignored in: UseMethod("extract", e, n,
> > ...)
> >
> > My extract.turnpoints() function produces warnings. I can easily spot
> > the origin of this warning:
> >
> >  > extract
> > function (e, n, ...)
> > UseMethod("extract", e, n, ...)
> >  > extract.turnpoints
> > function (e, n, no.tp = 0, peak = 1, pit = -1, ...)
> > {
> >     if (missing(n))
> >         n <- length(e)
> >     res <- rep(no.tp, length.out = e$n)
> >     res[e$pos[e$peaks]] <- peak
> >     res[e$pos[e$pits]] <- pit
> >     if (n < length(res) & n > 0)
> >         res <- res[1:n]
> >     res
> > }
> >
> > This is because my extract.turnpoints() method defines more arguments
> > than 'e' and 'n' in the generic function. However,
> >
> > 1) I though that the '...' argument in S3 generic function was there to
> > allow defining/passing additional arguments in/to S3 methods. Is this
> > correct? If yes, why the warning?
> >
> > 2) Despite the warning says arguments after the first two are ignored,
> > this appears not to be the case: in this example, 'no.tp', 'peak' and
> > 'pit' arguments are taken into account, as you can see (different
> > behaviour if you give other values to them).
> >
> > I am a little bit lost. Could someone help me, please.
> >
> > Best,
> >
> > Philippe Grosjean
> >
> >
> > --
> > ..............................................<°}))><........
> >  ) ) ) ) )
> > ( ( ( ( (    Prof. Philippe Grosjean
> >  ) ) ) ) )
> > ( ( ( ( (    Numerical Ecology of Aquatic Systems
> >  ) ) ) ) )   Mons-Hainaut University, Pentagone (3D08)
> > ( ( ( ( (    Academie Universitaire Wallonie-Bruxelles
> >  ) ) ) ) )   8, av du Champ de Mars, 7000 Mons, Belgium
> > ( ( ( ( (
> >  ) ) ) ) )   phone: + 32.65.37.34.97, fax: + 32.65.37.30.54
> > ( ( ( ( (    email: Philippe.Grosjean at umh.ac.be
> >  ) ) ) ) )
> > ( ( ( ( (    web:   http://www.umh.ac.be/~econum
> >  ) ) ) ) )          http://www.sciviews.org
> > ( ( ( ( (
> > ..............................................................
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> >
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>


--
Henrik Bengtsson
Mobile: +46 708 909208 (+1h UTC)




More information about the R-help mailing list