2016-04-20 13 views
0

Ich habe eine Reihe von Elementen A, B, C und D. Für jedes mögliche Paar (AB, AC, AD, BC, BD, CD) habe ich eine Entfernung berechnet Messen und Speichern in einem Vektor an Position x.Liste der möglichen Paare in Abstandsmatrix umwandeln in R

Position x wird durch die folgende Schleife bestimmt: (n Anzahl der Elemente ist, in diesem Beispielfall, 4)

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

Was ist der einfachste Weg, distancevector in eine Abstandsmatrix in R zu transformieren?

Beispiel:

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

was ich will würde dieser Abstand Matrix sein:

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

+0

Können Sie ein Beispiel nennen? Ein Weg könnte sein, mit der "dist" -Klasse, die eine 'as.matrix'-Methode hat, zu betrügen. I.e. unter Annahme eines Abstandsvektors 'vec = runif (6)' siehe 'as.matrix (Struktur (vec, class =" dist ", Size = 4))' –

+0

hat das Beispiel in der Hauptfrage geschrieben – fcid

Antwort

0

In base R können wir versuchen:

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

Danke! Das wollte ich :) – fcid

Verwandte Themen