Anzahl der Vorkommen des Vektors in der Liste zählen

7

Ich habe eine Liste von Vektoren variabler Länge, zum Beispiel:

%Vor%

Ich muss z. B. die Anzahl der Vorkommen für jeden der Vektoren in der Liste zählen (jede andere geeignete Datenstruktur ist akzeptabel):

%Vor%

Gibt es einen effizienten Weg, dies zu tun? Die tatsächliche Liste hat Zehntausende von Elementen, so dass quadratisches Verhalten nicht möglich ist.

    
Jan Šimbera 07.09.2016, 14:17
quelle

2 Antworten

14

match und unique akzeptieren und behandeln auch "list" s ( ?match warnt davor langsam auf "list" s zu sein). Also, mit:

%Vor%

Jedes Element wird einer einzelnen ganzen Zahl zugeordnet. Dann:

%Vor%

Und finden Sie eine Struktur, um die Ergebnisse zu präsentieren:

%Vor%

Alternativ zu match(x, unique(x)) approach könnten wir jedes Element mit deparse ing:

auf einen einzelnen Wert abbilden %Vor%

Da es sich um einen Fall mit eindeutigen Ganzzahlen handelt und wir von einem kleinen Bereich ausgehen, könnten wir jedes Element nach der Umwandlung jedes Elements in eine Binärdarstellung in eine einzelne Ganzzahl umwandeln:

%Vor%

und dann tabulate wie zuvor.

Und nur um die obigen Alternativen zu vergleichen:

%Vor%

Eine weitere interessante Alternative basiert auf der Bestellung. R & gt; 3.3.0 hat eine grouping -Funktion, die aus data.table erstellt wurde, die zusammen mit der Reihenfolge einige Attribute für die weitere Bearbeitung bereitstellt:

Machen Sie alle Elemente von gleicher Länge und "transpose" (wahrscheinlich die langsamste Operation in diesem Fall, obwohl ich nicht sicher bin, wie sonst grouping zu füttern ist):

%Vor%

Verwenden Sie die Sortierung, um ähnliche Elemente zu gruppieren, die ganzen Zahlen zugeordnet sind:

%Vor%

dann, tabellarisch wie zuvor. Um die Vergleiche fortzusetzen:

%Vor%

In diesem Vergleich sind q Elemente von geringer Länge, um für f3 , aber f3 (wegen der großen Potenzierung) und f4 (wegen mapply ) zu berücksichtigen, wenn "Listen" von größeren Elementen verwendet werden.

    
alexis_laz 07.09.2016, 14:53
quelle
6

Eine Möglichkeit besteht darin, jeden Vektor einzufügen, zu entfernen und zu tabellieren, d. h.

%Vor%     
Sotos 07.09.2016 14:35
quelle

Tags und Links