So gruppieren Sie einen Vektor in eine Liste von Vektoren?

Habe ich einige Daten, die sieht aus wie diese (gefälschte Daten, zum Beispiel halber):

dressId        color 
6              yellow 
9              red
10             green 
10             purple 
10             yellow 
12             purple 
12             red 

wo Farbe ist ein Faktor, der Vektor. Es ist nicht garantiert, dass alle möglichen Ebenen der Faktor, der tatsächlich in den Daten auftauchen (z.B. die Farbe "blau" könnte auch eine der Ebenen).

Brauche ich eine Liste von Vektoren, welche Gruppen mit den verfügbaren Farben für jedes Kleid:

[[1]]
yellow  

[[2]] 
red    

[[3]] 
green purple yellow 

[[4]] 
purple red 

Erhaltung der IDs der Kleider wäre schön (z.B. ein dataframe, wo diese Liste in der zweiten Spalte und die IDs sind die ersten), ist aber nicht notwendig.

Schrieb ich eine Schleife, die geht durch den dataframe Zeile für Zeile, und während der nächsten ID ist die gleiche, es fügt Farbe zu einem Vektor. (Ich bin sicher, dass die Daten sortiert nach ID). Wenn die ID in der ersten Spalte ändert, dann wird der Vektor in eine Liste:

result <- NULL 
while(blah blah) 
{
    some code which creates the vector called "colors" 
    result[[dressCounter]] <- colors 
    dressCounter <- dressCounter + 1
}

Nach dem Ringkampf mit dem Sie alle erforderlichen zähl-Variablen zu korrigieren, fand ich zu meiner Bestürzung, dass es nicht funktioniert. Das erste mal, colors ist

[1] yellow
Levels: green yellow purple red blue

und es wird gezwungen in eine ganze Zahl, so result wird 2.

In der zweiten Schleife Wiederholung colors enthält nur rot, und result wird eine einfache integer-Vektor, [1] 2 4.

In der Dritten Wiederholung, colors ist ein Vektor nun,

[1] green  purple yellow
Levels: green yellow purple red blue 

bekommen und habe

result[[3]] <- colors

Fehler in result[[3]] <- Farben :

mehrere Elemente geliefert, als es zu ersetzen

Was mache ich falsch? Gibt es eine Möglichkeit zu initialisieren result damit es nicht umgewandelt in einen numeric-Vektor, sondern eine Liste von Vektoren?

Außerdem ist es ein weiterer Weg, um die ganze Sache als "roll meine eigene"?

InformationsquelleAutor rumtscho | 2014-02-01
Schreibe einen Kommentar