[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