Thank you all for your help and best wishes for the holiday season.
Matt Considine

On 12/24/2011 8:38 AM, William Revelle wrote:
Dear Matt, Sarah and Rui,

To answer the original question for creating a symmetric matrix


v<-c(0.33740, 0.26657, 0.23388, 0.23122, 0.21476, 0.20829, 0.20486,
0.19439, 0.19237,
0.18633, 0.17298, 0.17174, 0.16822, 0.16480, 0.15027)

z<-diag(6)
z[row(z)>  col(z)]<- v
z<- z + t(z)
diag(z)<- 0

z
         [,1]    [,2]    [,3]    [,4]    [,5]    [,6]
[1,] 0.00000 0.33740 0.26657 0.23388 0.23122 0.21476
[2,] 0.33740 0.00000 0.20829 0.20486 0.19439 0.19237
[3,] 0.26657 0.20829 0.00000 0.18633 0.17298 0.17174
[4,] 0.23388 0.20486 0.18633 0.00000 0.16822 0.16480
[5,] 0.23122 0.19439 0.17298 0.16822 0.00000 0.15027
[6,] 0.21476 0.19237 0.17174 0.16480 0.15027 0.00000


Bill


On Dec 24, 2011, at 6:04 AM, Sarah Goslee wrote:

Or the slightly shorter:

z<-diag(6)
z[row(z)>  col(z)]<- v

which is what lower.tri() does,

and
z<- diag(6)
z[lower.tri(z)]<- v

also works.

Sarah

On Fri, Dec 23, 2011 at 9:31 PM, Rui Barradas<ruipbarra...@sapo.pt>  wrote:
Matt Considine wrote
Hi,
I am trying to work with the output of the MINE analysis routine found at
    http://www.exploredata.net

Specifically, I am trying to read the results into a matrix (ideally an
n x n x 6 matrix, but I'll settle right now for getting one column into
a matrix.)

The problem I have is not knowing how to take what amounts to being one
half of a symmetric matrix - excluding the diagonal - and getting it
into a matrix.  I have tried using "lower.tri" as found here
    https://stat.ethz.ch/pipermail/r-help/2008-September/174516.html
but it appears to only partially fill in the matrix.  My code and an
example of the output is below.  Can anyone point me to an example that
shows how to create a matrix with this sort of input?

Thank you in advance,
Matt

#v<-newx[,3]
#or, for the sake of this example
v<-c(0.33740, 0.26657, 0.23388, 0.23122, 0.21476, 0.20829, 0.20486,
0.19439, 0.19237,
0.18633, 0.17298, 0.17174, 0.16822, 0.16480, 0.15027)
z<-diag(6)
ind<- lower.tri(z)
z[ind]<- t(v)[ind]

z
          [,1]    [,2] [,3] [,4] [,5] [,6]
[1,] 1.00000 0.00000    0    0    0    0
[2,] 0.26657 1.00000    0    0    0    0
[3,] 0.23388 0.19237    1    0    0    0
[4,] 0.23122 0.18633   NA    1    0    0
[5,] 0.21476 0.17298   NA   NA    1    0
[6,] 0.20829 0.17174   NA   NA   NA    1


Hello,

Aren't you complicating?

In the last line of your code, why use 'v[ind]' if 'ind' indexes the matrix,
not the vector?

z<-diag(6)
ind<- lower.tri(z)
z[ind]<- v                        #This works
z

Rui Barradas

--
Sarah Goslee
http://www.functionaldiversity.org

______________________________________________
R-help@r-project.org 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.

William Revelle                    http://personality-project.org/revelle.html
Professor                                  http://personality-project.org
Department of Psychology   http://www.wcas.northwestern.edu/psych/
Northwestern University    http://www.northwestern.edu/
Use R for psychology             http://personality-project.org/r
It is 6 minutes to midnight        http://www.thebulletin.org





______________________________________________
R-help@r-project.org 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.

Reply via email to