On 6/20/06, Robin Hankin <[EMAIL PROTECTED]> wrote: > On 19 Jun 2006, at 12:45, Gabor Grothendieck wrote: > > Try this: > > > > both <- c(x,y) > > as.table(tapply(both, names(both), sum)) > > > thanks for this, Gabor. > > The class of the objects I am manipulating in my > package is c("count", "table"). > > It'd be nice to overload the "+" symbol so that I can add > two count objects like this with a simple "x+y". To this end, I > defined a Ops.count() function that executed Gabor's summation. > > But, this broke all sorts of functionality in the package, > because the ">" relation was not defined in my Ops.count() > function. > > In my case, the only operation that I want to redefine is "+". > I want to leave all the others unchanged. > > What is Best Practice for redefining just one binary operator? > > > > > > > On 6/19/06, Robin Hankin <[EMAIL PROTECTED]> wrote: > >> Hi > >> > >> Suppose I have two tables of counts of different animals and I > >> wish to pool them so the total of the sum is the sum of the total. > >> > >> Toy example follows (the real ones are ~10^3 species and ~10^6 > >> individuals). > >> x and y are zoos that have merged and I need a combined inventory > >> including animals that are temporarily absent. > >> > >> > >> > (x <- as.table(c(cats=3,squid=7,pigs=2,dogs=1,slugs=0))) > >> cats squid pigs dogs slugs > >> 3 7 2 1 0 > >> > (y <- as.table(c(cats=4,dogs=5,slugs=3,crabs=0))) > >> cats dogs slugs crabs > >> 4 5 3 0 > >> > (desired.output <- as.table(c > >> (cats=7,squid=7,pigs=2,dogs=6,slugs=3,crabs=0))) > >> cats squid pigs dogs slugs crabs > >> 7 7 2 6 3 0 > >> > > >> > >> > >> > >> > >> Note that we have 7 cats altogether, and the crabs correctly show > >> as zero counts. > >> > >> > >> How to do this nicely in R?
This will define + but not the others: "+.count" <- function(x,y) { both <- c(x,y) as.table(tapply(both, names(both), sum)) } ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel