Re: Map function with 2 variables
- To: mathgroup at smc.vnet.net
- Subject: [mg114961] Re: Map function with 2 variables
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Fri, 24 Dec 2010 04:12:28 -0500 (EST)
On 12/23/10 at 3:56 AM, jagra24891 at mypacks.net (Jagra) wrote: >I have a problem that comes up in a couple of situations and I've >never found the right solution. I hoped I could get an idea of how >to generally address these kinds of things. >Say I have a function with two variables, something like a >SpearmanRankCorrelation[] from the MultiVariate Statistics package: >I also have matrix "m" with dimensions {3, 100} >m = RandomReal[{0, 1}, {3, 100}]; >Now, say I want to create a correlation matrix using the >SpearmanRankCorrelation function. >I can get the rank correlations between a single vector of the >matrix and all the other vectors like this: >SpearmanRankCorrelation[m[[1]], #] & /@ m >This would give me a single row in a correlation matrix. Pretty >straightforward, but now I want all 3 rows like I would get with >this: >{SpearmanRankCorrelation[m[[1]], #] & /@ m, >SpearmanRankCorrelation[m[[2]], #] & /@ m, >SpearmanRankCorrelation[m[[3]], #] & /@ m} >There must be a way I can do this more directly. I must be missing >something simple. By using Subsets, you can generate pairs of row/column indices. That is: In[13]:= Subsets[Range[3], {2}] Out[13]= {{1, 2}, {1, 3}, {2, 3}} So, your goal can be achieved as: SpearmanRankCorrelation@@(m[[#]])&/@Subsets[Range[3],{2}]