As an extra curiosity, courtesy of Herve, selectMethod() does not seem to be
confused:

> rbind(1)
Error in .Method(..., na.last = na.last, decreasing = decreasing,
deparse.level = deparse.level) :
  object "na.last" not found
> foo <- selectMethod("rbind", "numeric")
> foo
Method Definition (Class "derivedDefaultMethod"):

function (..., deparse.level = 1)
.Internal(rbind(deparse.level, ...))
<environment: namespace:base>

Signatures:
        ...
target  "numeric"
defined "numeric"
> foo(1)
     [,1]
[1,]    1
>

On Tue, Nov 25, 2008 at 2:38 PM, Michael Lawrence <[EMAIL PROTECTED]>wrote:

> There seems to be a bug arising when using multiple S4 generics with "..."
> as the signature.
>
> The following code works as expected:
>
> ##############################################################
>
> > setGeneric("rbind", function(..., deparse.level=1)
> standardGeneric("rbind"),
> +            signature = "...")
> Creating a generic for "rbind" in package  ".GlobalEnv"
>     (the supplied definition differs from and overrides the implicit
> generic in package "base": Signatures differ:  (...), (deparse.level))
> [1] "rbind"
> > rbind(1)
>      [,1]
> [1,]    1
> > rbind
> standardGeneric for "rbind" defined from package ".GlobalEnv"
>
> function (..., deparse.level = 1)
> standardGeneric("rbind")
> <environment: 0x83862f4>
> Methods may be defined for arguments: ...
> Use  showMethods("rbind")  for currently available ones.
> > removeGeneric("rbind")
> [1] TRUE
> > rbind
> function (..., deparse.level = 1)
> .Internal(rbind(deparse.level, ...))
> <environment: namespace:base>
> > setGeneric("order", signature="...",
> +            function (..., na.last=TRUE, decreasing=FALSE)
> +            standardGeneric("order"))
> Creating a generic for "order" in package  ".GlobalEnv"
>     (the supplied definition differs from and overrides the implicit
> generic in package "base": Signatures differ:  (...), (na.last, decreasing))
> [1] "order"
> > rbind(1)
>      [,1]
> [1,]    1
> > setGeneric("rbind", function(..., deparse.level=1)
> standardGeneric("rbind"),
> +            signature = "...")
> Creating a generic for "rbind" in package  ".GlobalEnv"
>     (the supplied definition differs from and overrides the implicit
> generic in package "base": Signatures differ:  (...), (deparse.level))
> [1] "rbind"
> > rbind(1)
>      [,1]
> [1,]    1
>
> ##########################################################
>
> That is, rbind(1) always returns the expected result. The rbind() generic
> is set, then removed, the order() generic is set, and the rbind() generic is
> set again. No problems.
>
> But in a new session, this code breaks, where the rbind() generic is not
> set before the order() generic:
>
> ########################################################
>
> > setGeneric("order", signature="...",
> +            function (..., na.last=TRUE, decreasing=FALSE)
> +            standardGeneric("order"))
> Creating a generic for "order" in package  ".GlobalEnv"
>     (the supplied definition differs from and overrides the implicit
> generic in package "base": Signatures differ:  (...), (na.last, decreasing))
> [1] "order"
> > rbind(1)
>      [,1]
> [1,]    1
> > setGeneric("rbind", function(..., deparse.level=1)
> standardGeneric("rbind"),
> +            signature = "...")
> Creating a generic for "rbind" in package  ".GlobalEnv"
>     (the supplied definition differs from and overrides the implicit
> generic in package "base": Signatures differ:  (...), (deparse.level))
> [1] "rbind"
> > rbind(1)
> Error in .Method(..., na.last = na.last, decreasing = decreasing,
> deparse.level = deparse.level) :
>   object "na.last" not found
>
> ##############################################################
>
> It looks like something is trying to send the parameters of order() to an
> rbind() method. Weird..
>
> Thanks,
> Michael
>
> > sessionInfo()
> R version 2.9.0 Under development (unstable) (--)
> i686-pc-linux-gnu
>
> locale:
> C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
>

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to