Duncan Murdoch <[EMAIL PROTECTED]> writes:
> By the way, another complaint is that sum() is supposed to be generic,
> but you can't define a sum.matrix() method so that sum(a,b,c) does the
> same as a+b+c when a is a matrix.
Ah, yes. This also means that my suggestion doesn't work unless "+" is
associative, since
> quote(a+b+c)[[3]]
c
> quote(a+b+c)[[2]]
a + b
so a+b+c is really (a+b)+c and I was calculating a+(b+c). That's
actually a little bit harder because you don't get help from argument
matching:
"++" <- function(...) if ((n <- nargs()) == 1) ..1 else {
l <- list(...)
do.call("++",l[-n]) + l[[n]]
}
> do.call("++", sapply(1:4, f, simplify=FALSE))
[,1] [,2] [,3]
[1,] 4 120 780
[2,] 30 340 1554
and just to rub it in, notice that things like recycling can destroy
associativity:
> 1:2 + (1:3 + 1:5)
[1] 3 6 7 7 8
Warning messages:
1: longer object length
is not a multiple of shorter object length in: 1:3 + 1:5
2: longer object length
is not a multiple of shorter object length in: 1:2 + (1:3 + 1:5)
> (1:2 + 1:3) + 1:5
[1] 3 6 7 6 9
Warning messages:
1: longer object length
is not a multiple of shorter object length in: 1:2 + 1:3
2: longer object length
is not a multiple of shorter object length in: (1:2 + 1:3) + 1:5
--
O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.