[R] Converting a asymmetric data frame to symmetric matrix

arun smartpink111 at yahoo.com
Wed Sep 18 17:56:36 CEST 2013


Hi,

It is not clear whether it is a data frame or vector.  Please use ?dput() to show the example dataset.


vec1<- 5:7 
mat1<- matrix(0,3,3,dimnames=list(letters[1:3],letters[1:3]))
mat2<- mat1
 nm1<- c("ab","bc","ac")
 vec2<-paste0(colnames(mat1)[col(mat1)],rownames(mat1)[row(mat1)])
 mat1[match(nm1,vec2)]<- vec1
 mat1
#  a b c
#a 0 0 0
#b 5 0 0
#c 7 6 0

#or
 vec2<- c(5,7,6)
 mat2[upper.tri(mat2)]<- vec2
 mat2[lower.tri(mat2)]<- vec2
 mat2
#  a b c
#a 0 5 7
#b 5 0 6
#c 7 6 0
A.K.



----- Original Message -----
From: K. Taraka Rama <taraka at fripost.org>
To: r-help at r-project.org
Cc: 
Sent: Wednesday, September 18, 2013 9:18 AM
Subject: [R] Converting a asymmetric data frame to symmetric matrix

Hi,

I have a pair-wise distance vector. FOr objects: a,b,c, it is: (a,b) :5, 
(b,c) :6, (a,c) : 7. I want to convert it into a symmetric matrix. I 
used cast function but the function does not fill the matrix like a 
triangular matrix. How do I get a symmetric matrix?

-- 
--Taraka

______________________________________________
R-help at 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.




More information about the R-help mailing list