2016-06-25 11 views
0

Ich möchte p Werte und Abstände als untere dreieckige und obere dreieckige Einträge in einer einzigen Matrix darstellen. Während ich eine UT oder LT-Matrix für beide schaffen verwaltet, ich habe ben nicht in der Lage, sie in einem einzigen Datenrahmenkombinieren obere tri- und untere Tri-Matrizen in einen einzigen Datenrahmen

dist[(upper.tri(dist,diag=FALSE))]=0 #upper tri of distances 
pval[(lower.tri(pval,diag=FALSE))]=0 #lower tri of p-values 

Ich habe versucht, die folgende Zeile in R. zu fusionieren, funktioniert aber nicht

dist[(upper.tri(dist,diag=FALSE))]=pval[(lower.tri(pval,diag=FALSE))] 

Jeder mögliche Weg, dies zu tun?

+0

Wie möchten Sie zusammenführen? Bitte geben Sie ein Beispiel für dist und erwartete Ausgabe. –

Antwort

0

Ich bin sicher, dass dies mehr elegant getan werden könnte, aber ich denke, das tut, was Sie wollen:

a <- matrix(0, nrow = 10, ncol = 10) 
b <- matrix(1, nrow = 10, ncol = 10) 

a[upper.tri(a)] 
b[lower.tri(b)] 

new <- matrix(NA, nrow = 10, ncol = 10) 
new[upper.tri(new)] <- a[upper.tri(a)] 
new[lower.tri(new)] <- b[lower.tri(b)] 
new 

Da Sie nicht ein reproduzierbares Beispiel liefern haben, kann ich nicht sicher sein, aber im Grunde I nehmen Sie einfach die obere und untere Matrizen (eine von 0 und die andere von 1) und kombinieren Sie sie in new. Als Beweis für das Konzept, neu hat 0 über der Diagonale, 1s unten, und NAs auf der Diagonale selbst. Hoffentlich gibt Ihnen das einen Einblick in Ihr Problem.

+0

danke! Das ist genau das, wonach ich suchte, aber viele der Zeilen, die ich schrieb, waren ungeschickt. Nochmals vielen Dank! –

Verwandte Themen