[Rd] Extending %*%

Duncan Murdoch murdoch at stats.uwo.ca
Tue May 20 10:59:57 MEST 2003


On Mon, 19 May 2003 21:56:24 -0400, you wrote in message
<te2jcvkqn8uq9it881386oqi1n4j8ncakh at 4ax.com>:

>I have lists of matrices stored in various ways.  I'd like to extend
>%*% to work on these.  Is this possible, or should I create my own new
>operator?

In answer to my own question:  yes, it's possible, using the S4
classes and methods.  It would look something like this:


setClass("special", representation(m = "list"))

setMethod("%*%", 
                signature(x = "special", y="special"),
                function(x,y) 
		new("special", 
			m = mapply("%*%", x at m, y at m, SIMPLIFY=FALSE))
)


A1 <- A2 <- A3 <- B1 <- B2 <- B3 <- diag(c(2,3))

A <- new("special", m = list(A1, A2, A3))

B <- new("special", m = list(A1, A2, A3))

A %*% B

(Thanks Uwe for the compact expression to implement the method!)

Duncan Murdoch



More information about the R-devel mailing list