Re: [R] generalized matrix product ?

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Sat 30 Apr 2005 - 09:24:08 EST

On 4/29/05, George_Heine@blm.gov <George_Heine@blm.gov> wrote:
>
>
> Is there available in R a generalized inner product or matrix product,
> similar to 'outer(x,y, fun)', where one can specifiy an arbitrary function
> in place of ordinary multiplication?
>
> Here's my application. I frequently analyze user questionnaires from our
> HR/training department. These have questions of the form
> "please rate your skill in task X",
> and other 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.
>
> Is there a way to accomplish this without nested 'for' statements?

Try this:

inner <- function(a,b,f, ...) {

		f <- match.fun(f)
		apply(b,2,function(x)apply(a,1,function(y)f(x,y, ...)))
}

data(iris); irish <- head(iris)[,-5] # test data res <- inner(t(irish), irish, cor, method = "spearman") # test

res2 <- cor(irish, method = "spearman") # should give same result identical(res, res2) # TRUE



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sat Apr 30 09:31:07 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:31 EST