Ich würde das wahrscheinlich tun.
%Vor%Entpacken Sie das ein bisschen:
readLines()
liest die Datei in R als Zeichenvektor mit einem Element für jede Zeile ein. gsub(",", "\t", ...)
ersetzt jedes Komma mit einem Tab, so dass wir jetzt Zeilen mit nur einer Art Trennzeichen haben. textConnection()
schließt den Zeichenvektor von (geänderten) Dateizeilen so auf, dass sie als Datei für read.table()
angezeigt werden, sodass ... read.table
kann auf sie wie eine normale Datei zugreifen. .
Gemessen an der Art und Weise, wie Sie Ihre Frage formuliert haben, scheint es, dass Sie wissen, dass Ihre Daten "ausgewogen" (rechteckig) sind.
Suchen Sie nach schnelleren Optionen? Vielleicht möchten Sie fread
aus "data.table" mit meiner experimentellen Funktion concat.split.DT
kombinieren.
Die Lösung würde ungefähr so aussehen (ersetzen Sie " "
durch "\t"
für eine Registerkarte):
Machen wir uns ein paar Daten zurecht:
%Vor%Joshs Antwort:
%Vor% fread
+ concat.split.DT
(das ist, als ob fread
zweimal verwendet wird, aber immer noch super schnell ist):
Obwohl es sich nicht auf Ihr Problem bezieht, sollte ich dies zum Wohle anderer erwähnen, die ein ähnliches Problem lösen müssen:
Eine Einschränkung des oben genannten ist, dass concat.split.DT
nur "ausgeglichene" Daten verarbeitet. fread
hat kein fill
Argument wie read.table
(und ich kann mich erinnern, irgendwo gelesen zu haben, dass es höchstwahrscheinlich kein solches Argument haben wird).
Hier ist ein Beispiel für das, was ich unter unausgewogen verstehe:
%Vor% read.table
kann das mit dem Argument fill = TRUE
behandeln:
concat.split.DT
verursacht in solchen Fällen einen unangenehmen Fehler, aber Sie können stattdessen meine Funktion cSplit
ausprobieren . Es ist nicht annähernd so schnell, aber immer noch anständig:
Dies tat:
Tags und Links r read.table