2009-09-10 10 views
17

Ich habe eine Textdatei mit einer id und name Spalte, und ich versuche, es in einen Datenrahmen in R zu lesen:Lesen von Textdateien mit read.table

d = read.table("foobar.txt", sep="\t") 

Aber aus irgendeinem Grund, ein viele Linien verschmolzen bekommen - zum Beispiel in Zeile 500 meines Datenrahmen, werde ich so etwas wie

row 500: 500 Bob\n501\tChris\n502\tGrace 

[Also, wenn meine ursprüngliche Textdatei hat, sagt sie, 5000 Linien, die Abmessungen von meinem Tisch sehen wollen nur am Ende sind 1000 Zeilen und 2 Spalten.]

Ich hatte das schon einige Male passiert. Weiß jemand, was das Problem ist oder wie es zu beheben?

+0

Bitte geben Sie die Datei (oder Teile davon) an, da unklar ist, was Sie falsch gemacht haben. –

+0

Von einem flüchtigen Blick auf Ihren Fehler, kann mindestens ein Problem sein, dass '500' und' Bob' nicht durch eine Registerkarte getrennt sind. –

Antwort

28

Von ?read.table: Die Anzahl der Datenspalten wird bestimmt, indem die ersten fünf Zeilen der Eingabe (oder die gesamte Datei, wenn sie weniger als fünf Zeilen enthält) oder die Länge von Spaltennamen, falls angegeben, angegeben wird ist länger. Dies könnte möglicherweise falsch sein, wenn fill oder blank.lines.skip true sind, also geben Sie col.names falls erforderlich an.

Also, vielleicht ist Ihre Datendatei nicht sauber. Als spezifischere den Datenimport helfen:

d = read.table("foobar.txt", 
       sep="\t", 
       col.names=c("id", "name"), 
       fill=FALSE, 
       strip.white=TRUE) 

werden genaue Spalten angeben und fill=FALSE wird eine zweispaltige Datenrahmen erzwingen.

+1

hi .. ist es möglich, unstrukturierte Textdateien zu lesen? –

+0

Ich glaube, Sie haben den ersten Parameternamen vergessen: '(file =" footer.txt ", ...)' – iTurki

+3

@JayNirgudkar Schauen Sie sich 'scan' und' readLines' an. – lmo

Verwandte Themen