# RE: [R] generalized matrix product ?

From: Huntsinger, Reid <reid_huntsinger_at_merck.com>
Date: Sat 30 Apr 2005 - 06:35:15 EST

Say you have a function FUN of two vector arguments which operates "columnwise on arrays". E.g., if FUN(v,w) is to be the inner product, then instead of v%*%t(w) write something like colSums(v*w). Now you can do something like

vectorOuterProd <- function(A,B,FUN) {

```  da <- dim(A)[-1]
na <- prod(da)
db <- dim(B)[-1]
nb <- prod(db)

```

result <- matrix(nrow=na,ncol=nb)
dim(B) <- c(dim(B)[1],nb)
for (j in 1:nb) {
result[,j] <- FUN(A,B[,j])
}
dim(result) <- c(da,db)
result
}

which loops over the columns of B rather than replicate A and B as in outer() to save space.

Here's my application. I frequently analyze user questionnaires from our HR/training department. These have questions of the form

"Have you taken course Y?" (or "How many years since you have taken course Y?")

I look at rank correlation between the (suitably ordered) vectors of responses to a question in the first group and a question in the second group. (The two vectors have the same length, but I want to replace the standard inner product with a different operation; in this case, rank correlation) Repeat the process across all possible pairs of questions.

Hope this is clear - thanks!
<>=<>=<>=<>=<>=<>=<>=<>=<>=<>=<>

George Heine, PhD
Mathematical Analyst
National IRM Center
U.S. Bureau of Land Management
voice (303) 236-0099

```fax       (303) 236-1974
cell      (303) 905-5382
```

pager gheine@my2way.com
<>=<>=<>=<>=<>=<>=<>=<>=<>=<>=<>t

R-help@stat.math.ethz.ch mailing list