转换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
在base
R中我们可以试试:
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
我有一系列元素 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
在base
R中我们可以试试:
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