Die Bereitstellung von Beispieldaten würde helfen. Sie können jedoch möglicherweise Folgendes an Ihre Anforderungen anpassen.
Ich habe eine Beispieldatendatei erstellt, bei der es sich lediglich um eine Textdatei handelt, die Folgendes enthält:
%Vor% Ich habe es als "test.csv" gespeichert. Das Trennzeichen ist die Zeichenfolge 'sep'. Ich denke, read.csv()
verwendet scan()
, das nur ein einzelnes Zeichen für sep
akzeptiert. Um dies zu umgehen, beachten Sie Folgendes:
readLines()
liest nur die Zeilen ein. gsub
ersetzt die aus mehreren Zeichen bestehende Trennzeichenfolge für ein einzelnes ' '
oder was auch immer für Ihre Daten geeignet ist. Dann liest textConnection()
und read.data()
alles bequem wieder ein. Für kleinere Datensätze sollte dies in Ordnung sein. Wenn Sie sehr große Datenmengen haben, sollten Sie eine Vorverarbeitung mit etwas wie AWK in Betracht ziehen, um die mehrteilige Trennzeichenfolge zu ersetzen. Das obige ist von Ссылка .
Aktualisieren
Wenn Sie in Ihren Daten Leerzeichen haben, verwenden Sie ein anderes Ersatztrennzeichen. Überlegen Sie, test.csv
zu ändern:
Dann mit der folgenden Funktion:
%Vor%Versuchen:
%Vor% Hier ersetzen Sie das ursprüngliche Trennzeichen durch Tabulatoren ( \t
). Das as.is
wird an read.table()
übergeben, um zu verhindern, dass Strings eingelesen werden, ist Faktoren, aber das ist Ihr Aufruf. Wenn Sie in Ihren Daten einen komplizierteren Leerraum haben, können Sie das Argument quote
in read.table()
hilfreich finden oder mit AWK, Perl usw. vorverarbeiten.
Ähnliches gilt für strsplit()
von crippledlambda und ist wahrscheinlich für Daten mittlerer Größe gleichwertig. Wenn die Leistung zum Problem wird, versuchen Sie beides und sehen Sie, was für Sie funktioniert.
In diesem Fall können Sie textConnection(txt)
durch Ihren Dateinamen ersetzen, aber im Wesentlichen können Sie einen Code oder eine Funktion um strsplit
erstellen. Hier nehme ich an, dass Sie eine Kopfzeile haben, aber Sie können natürlich ein header
-Argument definieren und die Erstellung Ihres Datenrahmens basierend auf der folgenden Funktion verallgemeinern: