0

我有一系列元素 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

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

例子:

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

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

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

4

1 回答 1

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
于 2016-04-20T16:17:42.423 回答