Convert and save distance matrix to a specific format

前端 未结 2 1027
执笔经年
执笔经年 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:59

    This is quite doable using base R functions. First we want all pairwise combinations of the rows to fill the columns c1 and c2 in the resulting object. The final column distance is achieved by simply converting the "dist" object d into a numeric vector (it already is a vector but of a different class).

    The first step is done using combn(rownames(x), 2) and the second step via as.numeric(d):

    m <- data.frame(t(combn(rownames(x),2)), as.numeric(d))
    names(m) <- c("c1", "c2", "distance")
    

    Which gives:

    > m
       c1  c2  distance
    1 aaa bbb 1.0000000
    2 aaa ccc 0.6666667
    3 aaa ffffd 0.5000000
    4 bbb ccc 0.3333333
    5 bbb ffffd 0.6666667
    6 ccc ffffd 0.3333333
    

    To save as a CSV file, write.csv(m, file = "filename.csv").

提交回复
热议问题