2017-10-12 1 views
0

Es wäre nett, Ihre Hilfe zu erhalten.Bestellung untere Matrix in R

Ich habe eine untere Dreiecksmatrix, aber ich möchte die Reihenfolge der Zeilen bearbeiten, basierend auf meiner eigenen Liste von Namen (vielleicht ein Vektor?).

INPUT

A C D B 
A 0 NA NA NA 
C 13 0 NA NA 
D 14 17 0 NA 
B 12 15 16 0 

OUTPUT

A B C D 
A 0 NA NA NA 
B 12 0 NA NA 
C 13 15 0 NA 
D 14 16 17 0 

ich die Reihenfolge der Zeilen sollte eine Liste sein, die von mir, und nicht jeder auf- oder absteigender Reihenfolge erinnern wollen.

Vielen Dank für Ihre Zeit!

Antwort

1

Wir können lower.tri verwenden, um eine logische Matrix zu erhalten, in der die unteren Hälfte Elemente TRUE sind und andere FALSE, Teilmenge den Datensatz ('v1'). Verwenden Sie diese zu order (v1[order(v1)]) und weisen sie zurück zu dem unteren Dreieck der Daten

v1 <- df1[lower.tri(df1)] 
df1[lower.tri(df1)] <- v1[order(v1)] 
+0

Hallo @ankur, vielen Dank für Ihre Antwort. Kannst du es ein bisschen erklären? besonders in welchem ​​Teil könnte ich die Liste der Namen (die Reihenfolge, die ich die Matrix anzeigen möchte) in Ihrem Skript einführen? – gusa10

+0

@ gusa10 Ich habe mehr Erklärung hinzugefügt – akrun

+0

aber ist das nicht Reihenfolge von Aszendent oder Absteigend? Wie ich in meinem Beitrag erwähnt habe, möchte ich bei der Bestellung flexibel sein. Meine Matrix hat viele Zeilen und ich möchte basierend auf meiner vordefinierten Liste – gusa10