2009-09-10 19 views
17

Ho un file di testo con una colonna id e name, e sto cercando di leggere in un frame di dati in R:file di testo di lettura utilizzando read.table

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

Ma per qualche ragione, un sacco di linee ottenere fuse - ad esempio, nella riga 500 della mia frame di dati, vedrò qualcosa di simile

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

[Quindi, se il mio file di testo originale ha, diciamo, 5000 linee, le dimensioni del mio tavolo sarà solo fino a 1000 righe e 2 colonne.]

Questo mi è successo diverse volte. Qualcuno sa qual è il problema o come risolverlo?

+0

Fornire il file (o parte di esso) in quanto non è chiaro cosa si è sbagliato. –

+0

Da uno sguardo superficiale al tuo errore, almeno un problema potrebbe essere che '500' e' Bob' non sono separati da una scheda. –

risposta

28

Da ?read.table: il numero di colonne di dati è determinato osservando le prime cinque righe di input (o l'intero file se ha meno di cinque righe) o dalla lunghezza di col.names se è specificato e è più lungo Questo potrebbe essere errato se fill o blank.lines.skip sono veri, quindi specificare col.names se necessario.

Quindi, forse il file di dati non è pulito. Essere più specifico contribuirà l'importazione dei dati:

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

specificherà colonne esatte e fill=FALSE forzerà un frame di dati a due colonne.

+1

ciao .. è possibile leggere i file di testo non strutturati? –

+0

Penso che tu abbia dimenticato il nome del primo parametro: '(file =" footer.txt ", ...)' – iTurki

+3

@JayNirgudkar Dai un'occhiata a 'scan' e' readLines'. – lmo

Problemi correlati