2009-09-10 16 views
17

Tengo un archivo de texto con una columna id y name, y estoy tratando de leer en una trama de datos en I:la lectura de archivos de texto utilizando read.table

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

Pero por alguna razón, una muchas líneas quedan fusionadas - por ejemplo, en la fila 500 de mi trama de datos, voy a ver algo así como

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

[Así que si mi archivo de texto original tiene, digamos, 5000 líneas, las dimensiones de mi tabla solo terminan siendo 1000 filas y 2 columnas.]

Me ha sucedido esto bastantes veces. ¿Alguien sabe cuál es el problema o cómo solucionarlo?

+0

Proporcione el archivo (o partes del mismo) ya que no está claro qué hizo mal. –

+0

Desde un vistazo superficial a su error, al menos un problema puede ser que '500' y' Bob' no estén separados por una pestaña. –

Respuesta

28

De ?read.table: El número de columnas de datos se determina mirando las primeras cinco líneas de entrada (o el archivo completo si tiene menos de cinco líneas), o desde la longitud de col.names si se especifica y es más largo. Posiblemente, esto podría ser incorrecto si fill o blank.lines.skip son verdaderos, así que especifique col.names si es necesario.

Entonces, tal vez su archivo de datos no está limpio. Siendo más específicos ayudará a la importación de datos:

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

especificará columnas exactas y fill=FALSE obligará a una trama de datos de dos columnas.

+1

hola ... ¿es posible leer archivos de texto no estructurados? –

+0

Creo que olvidó el nombre del primer parámetro: '(file =" footer.txt ", ...)' – iTurki

+3

@JayNirgudkar Eche un vistazo a 'scan' y' readLines'. – lmo

Cuestiones relacionadas