转换R中距离矩阵中可能对的列表

Transform list of possible pairs in distance matrix in R

我有一系列元素 A、B、C 和 D。对于每个可能的对(AB、AC、AD、BC、BD、CD),我计算了一个距离度量并存储在一个向量中x.

位置x由以下循环确定: (n 是元素的数量,在本示例中为 4)

 n=1
 for i in 1:(n-1)
     for j in (i+1):n
         distancevector[n] = distancemeasure
         n = n+1

在 R 中将 distancevector 转换为距离矩阵的最简单方法是什么?

示例:

距离向量 = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6)

我想要的是这个距离矩阵:

A 1 0.1 0.2 0.3

B 0.1 1 0.4 0.5

C 0.2 0.4 1 0.6

D 0.3 0.5 0.6 1

baseR中我们可以试试:

n <- 4
distancevector <- c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6)

D <- diag(n)
D[lower.tri(D)] <- distancevector
D[upper.tri(D)] <- t(D)[upper.tri(D)]

> D
     [,1] [,2] [,3] [,4]
[1,]  1.0  0.1  0.2  0.3
[2,]  0.1  1.0  0.4  0.5
[3,]  0.2  0.4  1.0  0.6
[4,]  0.3  0.5  0.6  1.0