[Rd] S3 methods for cbind/rbind
Gabor Grothendieck
ggrothendieck at gmail.com
Wed Sep 27 23:02:07 CEST 2006
Maybe you could use rbind2, which has an S4 generic in the methods
package, instead?
# BOD is a data frame built into R
foo <- structure(BOD, class = c("bar", "data.frame"))
setOldClass("bar")
setMethod("rbind2", signature(x = "bar", y = "bar"),
function(x, y) {
cat("Hello!\n")
class(x) <- class(y) <- "data.frame"
rbind(x, y)
})
# test
foo <- structure(BOD, class = c("bar", "data.frame"))
rbind2(foo, foo)
On 9/27/06, Vincent Goulet <vincent.goulet at act.ulaval.ca> wrote:
> Hum. Then, I need to be more accurate. My object is of class
> c("bar", "data.frame"). So, by virtue of ...
>
> The dispatch algorithm is described in the source file
> ('.../src/main/bind.c') as
>
> 1. For each argument we get the list of possible class
> memberships from the class attribute.
>
> 2. We inspect each class in turn to see if there is an an
> applicable method.
>
> ... rbind(foo) is never sent to rbind.bar(). So I guess my questions stand.
>
> Le Mercredi 27 Septembre 2006 16:16, Gabor Grothendieck a écrit:
> > Actually you can add your own method. See
> >
> > library(zoo)
> > rbind.zoo
> >
> > for an example.
> >
> > On 9/27/06, Vincent Goulet <vincent.goulet at act.ulaval.ca> wrote:
> > > I created a type of object similar to a data frame. In some
> > > circumstances, It needs special methods for "[" and "[<-" and rbind()
> > > (but not cbind()). Then I found this in the cbind()/rbind() man page:
> > >
> > > The method dispatching is _not_ done via 'UseMethod()', but by
> > > C-internal dispatching. Therefore, there is no need for, e.g.,
> > > 'rbind.default'.
> > >
> > > This seems to imply I cannot add my own method. Is there 1) a workaround
> > > to and 2) a rationale for this? (Other than creating a generic Rbind() or
> > > whatever, that is.)
> > >
> > > I'm using S3 methods.
> > >
> > > Thanks in advance!
> > >
> > > --
> > > Vincent Goulet, Associate Professor
> > > École d'actuariat
> > > Université Laval, Québec
> > > Vincent.Goulet at act.ulaval.ca http://vgoulet.act.ulaval.ca
> > >
> > > ______________________________________________
> > > R-devel at r-project.org mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-devel
>
> --
> Vincent Goulet, Associate Professor
> École d'actuariat
> Université Laval, Québec
> Vincent.Goulet at act.ulaval.ca http://vgoulet.act.ulaval.ca
>
More information about the R-devel
mailing list