2016-04-20 2 views
0

У меня есть ряд элементов A, B, C и D. Для каждой возможной пары (AB, AC, AD, BC, BD, CD) я вычислил расстояние измерять и хранить в векторе в позиции x.Преобразование списка возможных пар в матрице расстояний в R

Позиция 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?

Пример:

distancevector = с (0,1, 0,2, 0,3, 0,4, 0,5, 0,6)

что я хочу бы это расстояние матрица:

1 0,1 0,2 0,3

В 0,1 1 0,4 0,5

С 0,2 0,4 1 0,6

D 0,3 0,5 0,6 1

+0

Не могли бы вы привести пример? Способ может заключаться в обмане с классом «dist», который имеет метод 'as.matrix'. То есть (vec, class = "dist", Size = 4)) ' –

+0

просто написал пример в главном вопросе – fcid

ответ

0

В 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 
+0

Спасибо! Это то, что я хотел :) – fcid

Смежные вопросы