From: Spencer Graves <spencer.graves_at_pdf.com>

Date: Wed 02 Mar 2005 - 09:20:50 EST

4 2.2666735 2.2149274 2.6890545

> length(dX)

[1] 6

> as.matrix(dX)

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Mar 02 09:26:25 2005

Date: Wed 02 Mar 2005 - 09:20:50 EST

Output from which program? If the output is of class "dist", then "as.matrix" should give you what you want:

> set.seed(1) > X <- array(rnorm(12), dim=c(4,3)) > (dX <- dist(X)) 1 2 3 2 1.6598683 3 0.9720025 2.4600033

4 2.2666735 2.2149274 2.6890545

> length(dX)

[1] 6

> as.matrix(dX)

1 2 3 4

1 0.0000000 1.659868 0.9720025 2.266674 2 1.6598683 0.000000 2.4600033 2.214927 3 0.9720025 2.460003 0.0000000 2.689054 4 2.2666735 2.214927 2.6890545 0.000000 > hope this helps. spencer graves

Douglas Bates wrote:

> Michael Anyadike-Danes wrote:

*>
**>> I have output from a program which produces a distance matrix I want to
**>> read into a clustering program in R.
**>>
**>>
**>>
**>> The output is a .txt file and is 'almost' lower triangular in the sense
**>> that it is just the triangle below the diagonal.
**>>
**>>
**>>
**>> So for example a 4-by-4 distance matrix appears as,
**>>
**>>
**>>
**>> 1
**>>
**>> 2 3
**>>
**>> 4 5 6
**>>
**>>
**>>
**>> i.e. it looks like a lower triangular of a 3-by3.
**>>
**>>
**>>
**>> I thought I might be able to use "diag" to add zeros but apparently not.
**>>
**>>
**>>
**>> It's a problem because my matrix is actually 1989-by-1989 not 4-by-4
**>>
**>>
**>>
**>> I would not be at all surprised if the solution is obvious but I cannot
**>> quite see how to read this into R.
**>
**>
**> You can use scan to get the entries from the file in row order. Then
**> create the matrix to hold the result and overwrite the elements in the
**> upper triangle with scanned vector. (R stores matrices in
**> column-major order so the row-major order from your file corresponds
**> to the upper triangle, not the lower triangle). I'll leave it to you
**> to work out the symmetrization operation.
**>
**> > file.show("/tmp/tri.dat")
**> 1
**> 2 3
**> 4 5 6
**> 7 8 9 10
**>
**> > mm <- array(0, c(4,4))
**> > mm[upper.tri(mm, diag = TRUE)] <- scan("/tmp/tri.dat")
**> Read 10 items
**> > mm
**> [,1] [,2] [,3] [,4]
**> [1,] 1 2 4 7
**> [2,] 0 3 5 8
**> [3,] 0 0 6 9
**> [4,] 0 0 0 10
**> > (res <- mm + t(mm))
**> [,1] [,2] [,3] [,4]
**> [1,] 2 2 4 7
**> [2,] 2 6 5 8
**> [3,] 4 5 12 9
**> [4,] 7 8 9 20
**> > diag(res) <- diag(res)/2
**> > res
**> [,1] [,2] [,3] [,4]
**> [1,] 1 2 4 7
**> [2,] 2 3 5 8
**> [3,] 4 5 6 9
**> [4,] 7 8 9 10
**>
**> ______________________________________________
**> R-help@stat.math.ethz.ch mailing list
**> https://stat.ethz.ch/mailman/listinfo/r-help
**> PLEASE do read the posting guide!
**> http://www.R-project.org/posting-guide.html
*

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Mar 02 09:26:25 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:30:39 EST
*