Convert and save distance matrix to a specific format

前端 未结 2 1028
执笔经年
执笔经年 2020-12-13 07:09

I got a distance matrix with the following steps:

x <- read.table(textConnection(\'
     t0 t1 t2
 aaa  0  1  0
 bbb  1  0  1
 ccc  1  1  1
 ffffd  1  1  0
         


        
2条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-13 07:50

    you can do this by combining melt from reshape package, upper.tri etc.:

    > library(reshape)
    > m <- as.matrix(d)
    > m
              aaa       bbb       ccc       ffffd
    aaa 0.0000000 1.0000000 0.6666667 0.5000000
    bbb 1.0000000 0.0000000 0.3333333 0.6666667
    ccc 0.6666667 0.3333333 0.0000000 0.3333333
    ffffd 0.5000000 0.6666667 0.3333333 0.0000000
    > m2 <- melt(m)[melt(upper.tri(m))$value,]
    > names(m2) <- c("c1", "c2", "distance")
    > m2
        c1  c2  distance
    5  aaa bbb 1.0000000
    9  aaa ccc 0.6666667
    10 bbb ccc 0.3333333
    13 aaa ffffd 0.5000000
    14 bbb ffffd 0.6666667
    15 ccc ffffd 0.3333333
    

提交回复
热议问题