Erstellen Sie einen Datenrahmen ungleicher Längen
Während Daten-Frames Spalten müssen die gleiche Anzahl Zeilen, gibt es eine Möglichkeit zum erstellen einer Daten-frame von unterschiedlicher Länge. Ich bin nicht daran interessiert, speichern Sie Sie als separate Elemente von einer Liste, weil ich Häufig auf E-Mail-Leute diese Infos als csv-Datei, und das ist am einfachsten als ein Daten-frame.
x = c(rep("one",2))
y = c(rep("two",10))
z = c(rep("three",5))
cbind(x,y,z)
In dem obigen code, die cbind()
Funktion nur recycelt die kürzere Spalten, so dass Sie alle 10 Elemente in jeder Spalte. Wie kann ich das ändern, es ist einfach so, dass die Längen sind 2, 10, und 5.
Ich habe dies in der Vergangenheit getan, indem Sie den folgenden tun, sondern es ist ineffizient.
df = data.frame(one=c(rep("one",2),rep("",8)),
two=c(rep("two",10)), three=c(rep("three",5), rep("",5)))
InformationsquelleAutor der Frage ATMathew | 2011-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sorry das ist nicht genau das, was Sie gefragt, aber ich glaube, es gibt einen anderen Weg, um zu bekommen, was Sie wollen.
Erste, wenn die Vektoren unterschiedlich lang sind, die Daten nicht wirklich tabellarisch ist es? Wie wärs einfach speichern Sie es auf verschiedene CSV-Dateien? Sie könnten auch versuchen, ascii-Formate, die es erlauben das speichern mehrerer Objekte (jsonXML).
Wenn Sie sich die Daten wirklich tabellarische, Sie könnte pad auf NAs:
Wenn Sie absolut müssen eine
data.frame
mit ungleichen Spalten, die Sie könnte gegen den check, auf eigene Gefahr:InformationsquelleAutor der Antwort Owen
Ein weiterer Ansatz, um der Polsterung:
Den
na.pad()
Funktion nutzt die Tatsache, dass R wird automatisch pad-Vektor mit NAs, wenn Sie versuchen, index nicht-existente Elemente.makePaddedDataFrame()
nur findet der längste und pads den rest bis zu einer passenden Länge.InformationsquelleAutor der Antwort Peter M
Zur Verstärkung @goodside, die Antwort, die Sie tun können, so etwas wie
(ungetestet).
InformationsquelleAutor der Antwort Ben Bolker
Ist dies nicht möglich. Die nächstgelegene Sie bekommen können, füllt die "leeren" Bereiche mit dem Wert
NA
.InformationsquelleAutor der Antwort goodside
Ähnliches problem:
Ausgabe:
Nach dem werfen der Münze gibt es 31 Kopf-und 19-Schwanz. Dann wird der rest des Schwanzes gefüllt wird NA um einen Daten-frame.
InformationsquelleAutor der Antwort ttb