Philippe Grosjean
2006-Mar-15 20:57 UTC
[R] Additional arguments in S3 method produces a warning
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
( ( ( ( (
..............................................................
Gabor Grothendieck
2006-Mar-15 21:17 UTC
[R] Additional arguments in S3 method produces a warning
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
>