Re: [R] Convert a List of Distances to a Distance Matrix

From: jim holtman <jholtman_at_gmail.com>
Date: Wed, 12 Mar 2008 20:48:42 -0500

Here is one way of doing it:

> x <- read.table(textConnection("A A 0

+ A B .5
+ A C .25
+ B C .5"), as.is=TRUE)

> closeAllConnections()
> # get the unique names
> x.names <- sort(unique(c(x[[1]], x[[2]])))
> # create a matrix of the right size and put names on it
> x.dist <- matrix(0, length(x.names), length(x.names))
> dimnames(x.dist) <- list(x.names, x.names)
> # create indices by converting names to numbers and create the normal and reversed
> # to fill in all the matrix
> x.ind <- rbind(cbind(match(x[[1]], x.names), match(x[[2]], x.names)),
+                cbind(match(x[[2]], x.names), match(x[[1]], x.names)))

> x.dist[x.ind] <- rep(x[[3]], 2)
> x.dist

     A B C

A 0.00 0.5 0.25
B 0.50 0.0 0.50
C 0.25 0.5 0.00

>

On Wed, Mar 12, 2008 at 7:45 PM, Charles Willis <willis.charlie_at_gmail.com> wrote:
> Hello,
>
> Is there an easy function for switching list to matrix. My list is of
> genetic distances between species pairs:
>
> A A 0
> A B .5
> A C .25
> B C .5
>
> and I want a distance matrix such as:
>
> A B C
> A 0 .5 .25
> B .5 0 .5
> C .25 .5 0
>
> for use in a mantel test.
>
> Thank you for the help!
>
> cheers,
> charlie
>
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Charles G. Willis
> Department of Organismic and Evolutionary Biology
> 22 Divinity Ave Cambridge MA 02139
> HP (857) 488-2506
> WP (617) 496-3890
> cgwillis_at_oeb.harvard.edu
> http://www.people.fas.harvard.edu/%7Ecgwillis/
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>

-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?

______________________________________________
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.
Received on Thu 13 Mar 2008 - 01:53:57 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 13 Mar 2008 - 02:30:25 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive