Fehler beim Schreiben in csv

7

Ich versuche, einen Datenrahmen in CSV zu schreiben, aber es scheint sich zu beschweren, weil die Spalten Listen enthalten.

Ich möchte in der Lage sein, auf diesen Datenrahmen zuzugreifen und ihn zu einem späteren Zeitpunkt in R aufzurufen. Es ist mir egal, wie ich das bewerkstellige (als Textdatei speichern). Dies ist ein ziemlich großer Datensatz n = 182305. Irgendwelche Ideen, um es in eine Datei zu schreiben, die ich ziemlich schnell in R lesen kann (ich bin nicht mit einer CSV-Datei verheiratet)

Datenrahmen & amp; der Code, den ich versucht habe

%Vor%

Fehlermeldung, die ich bekam:

%Vor%     
Tyler Rinker 29.11.2011, 04:10
quelle

3 Antworten

7

Versuchen Sie

%Vor%

Beachten Sie, dass Sie nicht die Erweiterung "Rdata" verwenden müssen, aber es oder "RData" scheint die Konvention zu sein.

Sie können die Daten dann mit

laden %Vor%

Beachten Sie, dass sich dies von dem Lesen eines externen Dateiformats unterscheidet, in dem Sie normalerweise etwas wie

tun würden %Vor%

Mit dem Befehl load wird das Objekt direkt geladen, sodass nach dem Ausführen des Befehls load Ihr DF2 -Objekt vorhanden ist.

    
Xu Wang 29.11.2011, 04:29
quelle
15

Dies ist nur dazu gedacht, das Problem von Listen als Spalten in Datenrahmen zu behandeln, die in den Kommentaren erwähnt werden.

In der spezifischen Instanz Ihrer Beispieldaten ist die einzige Stelle, an der die Listen "erforderlich" sind, das erste Element in DF2$pos , das ein Vektor der Länge zwei ist. Dies kann mit dem folgenden Code entfernt werden:

%Vor%

Im Allgemeinen besteht die Metapher eines Datenrahmens darin, dass die Zeilen Fällen oder Beobachtungseinheiten entsprechen und die Spalten Variablen entsprechen. Weiter besagt diese Metapher, dass eine bestimmte Beobachtungseinheit nur einen eins -Wert für jede Variable hat. In diesem Sinne ist es das gleiche wie eine Matrix, nur kann es Spalten verschiedener Klassen speichern.

Offensichtlich erlaubt R Ihnen, diese Metapher zu brechen, wie Sie herausgefunden haben. Die Frage, ob dies sinnvoll ist, wird domänen- und datenspezifisch sein. Nicht jeder Datensatz passt perfekt in die Metapher des Datenrahmens; Manchmal haben Sie eine Variable, bei der die "Werte", die Sie messen, nicht leicht zu einem einzigen Ausdruck zusammenfallen.

Sie werden eine Auswahl treffen müssen: in Ihrem Fall kann die Verwendung von newDF stattdessen die Verwendung von String-Parsing ( strsplit , usw.) erfordern, wenn Sie auf diesen Wert zugreifen. Das kann manchmal peinlich sein und es passt vielleicht nicht perfekt zu Ihrem mentalen Modell Ihrer Daten.

Auf der anderen Seite wird viel von R um Dinge herum aufgebaut, die in Datenrahmen auf eine Weise gespeichert werden, die der Metapher des Datenrahmens entspricht. Wie Sie mit write.csv festgestellt haben, verhalten sich einige Teile (in der Tat viele Teile) von R nicht so, wie Sie es erwarten. Dies erfordert auch zusätzliche Arbeit und Peinlichkeit.

Nach meiner Erfahrung ist es normalerweise besser, die Reinheit Ihrer vorgefassten Idee, wie Ihre Daten strukturiert sein sollten, zu opfern und stattdessen Ihr Bestes zu geben, um sie irgendwie in einen Datenrahmen einzupassen. Zumindest hat diese Route weniger Arbeitsumgebungen für mich beinhaltet. Aber nichts ist jemals perfekt.

Aber wie ich eingangs sagte, wird dies extrem daten- und domänenspezifisch sein. YMMV.

    
joran 29.11.2011 05:39
quelle
0

vielleicht in Zeichen konvertieren und dann speichern? DF2$pos <- as.character(DF2$pos)

    
TH339 28.03.2017 22:08
quelle

Tags und Links