Ich habe die Notwendigkeit, alle drei Elemente Dreiecke zu greifen, die das untere Dreieck einer symmetrischen Matrix bilden. Ich kann mir nicht vorstellen, wie ich all diese Teile in der Reihenfolge der weit links stehenden Spalte und dann der nächsten Spalte nach rechts und so weiter ergreife. Ich weiß, dass die numbe rof Minidreiecke innerhalb des unteren Dreiecks ist:Grab Dreiecke innerhalb eines unteren Dreiecks
n = x(x - 1)/2
where: x = nrow(mats[[i]])
Hier habe ich drei Matrizen mit Buchstaben erstellt (es ist einfacher für mich, auf diese Weise zu konzipieren) und die Elemente in der Reihenfolge, ich bin das ist also der Ausgang ich mag würde zu bekommen (ich habe es in Code statt Ausgabeformat) für jede der Matrizen oben erstellt
FUN <- function(n) {
matrix(LETTERS[1:(n*n)], n)
}
mats <- lapply(3:5, FUN)
: Suche
list(c("B", "C", "F"))
list(c("B", "C", "G"), c("C", "D", "H"), c("G", "H", "L"))
list(c("B", "C", "H"), c("C", "D", "I"), c("D", "E", "J"),
c("H", "I", "N"), c("I", "J", "O"), c("N", "O", "T"))
Wie kann ich tu t seine Aufgabe auf die schnellste Art und Weise während des Aufenthalts in der Basis R?
nicht sicher, ob diese Sicht von dem, was ich bin nach hilfreich, aber es kann sein:
Ist eine 5x5-Matrix die größte, die Sie haben zu testen erwarten würde? –
Nein, es könnte größer sein (obwohl ich sehr bezweifle, dass es jemals viel größer wäre). –
@TylerRinker - Ich musste gerade meine R-Sitzung schließen, während ich ein Benchmarking auf einer 10K * 10K-Matrix versuchte. 1K * 1K war eine Angelegenheit von ein paar Sekunden. Ich frage mich, ob Leute da draußen effizientere Implementierungen haben könnten. – thelatemail