Ich habe ein Array a
mit einigen Matrizen darin. Jetzt muss ich effizient prüfen, wie viele verschiedene Matrizen ich habe und welche Indizes (in aufsteigender Reihenfolge) sie im Array haben. Ich gehe folgendermaßen vor: Fügen Sie die Spalten der Matrizen als Zeichenvektoren ein und betrachten Sie die Häufigkeitstabelle wie folgt:
Wenn Sie jedoch n
auf große Zahlen erhöhen, wird dies sehr ineffizient (es wird hauptsächlich paste()
langsamer und langsamer). Hat jemand eine bessere Lösung?
Hier ist ein "realer" Datensatz mit 100 Beobachtungen, wobei einige Matrizen tatsächliche Duplikate sind (im Gegensatz zu meinem obigen Beispiel): Ссылка
Vielen Dank.
Da Ihre tatsächlichen Daten aus den ganzen Zahlen 0,1,2,3
bestehen, warum nutzen Sie nicht base 4
? Ganzzahlen sind viel schneller zu vergleichen als ganze Matrixobjekte. (Alle Vorkommen von " a
" sind die Daten, die in dem echten Datensatz über den Link gefunden wurden.)
Und da es sich um Effizienz handelt, lassen Sie uns einen Benchmark geben:
%Vor%Der Ansatz von @ d.b. macht nicht wirklich dasselbe wie die beiden vorherigen Ansätze (es identifiziert einfach und entfernt keine Duplikate).
%Vor% Allerdings dominiert weiterhin Base4Approach
:
Wie in den Kommentaren von @alexis_laz erwähnt, können wir viel besser machen.
%Vor%Mein erster Versuch war eigentlich sehr langsam. Also hier ist eine leicht veränderte Version von dir:
%Vor%Tags und Links r performance matrix