2012-03-08 20 views
28

Tengo dificultades para que R lea un archivo .txt o .csv que contiene apóstrofos.¿Cómo se lee un archivo .csv que contiene apóstrofes en R?

Algunas de mis columnas contienen texto descriptivo, como "Atiende las necesidades de los clientes" o "Diputado del sheriff". Mi archivo se abre correctamente en Excel (es decir, todos los datos aparecen en las celdas correctas; hay 3 columnas y alrededor de 8000 filas, y no hay datos faltantes). Pero cuando le pregunto R para leer el archivo, esto es lo que sucede:

data <-read.table("datafile.csv", sep=",", header=TRUE) 
    Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    line 520 did not have 3 elements 

(línea 520 es la primera línea que contiene un apóstrofo.)

Si entro en el archivo .txt o .csv y eliminar manualmente todos los apóstrofes, luego R lee el archivo correctamente. Sin embargo, prefiero mantener los apóstrofos si puedo.

Soy nuevo en R y le agradecería cualquier ayuda.

+0

Estoy votando porque, aunque básicamente sabía esto, una vez me pillé "gotcha'd" cuando leía en un archivo csv generado en una máquina de adquisición de datos. El problema era que, dentro de un bloque de encabezado bastante grande, el archivo tenía algunos campos w/apostophes (una ocurrencia inesperada). A veces hay que tomar un mirada cuidadosa a la crapola en el archivo fuente. –

Respuesta

31

De forma predeterminada, read.table ve las comillas simples y dobles como caracteres de cita. Debe agregar quote="\"" a su llamada read.table. O bien, puede usar read.csv, que solo ve comillas dobles como comillas de caracteres de forma predeterminada.

+1

Gracias por su ayuda. Curiosamente, no pude obtener ninguna de las opciones que tú o DWin sugirieron para que read.table funcione ... ¡pero read.csv funciona! – user1257313

+0

La otra diferencia con 'read.csv' es que su conjunto predeterminado es' fill = TRUE' –

8

Estudiar a fondo las opciones en? Read.table dará sus frutos a largo plazo. Los valores predeterminados para citar caracteres son quote = "\" '", que en realidad son solo dos caracteres después de que R analiza esa expresión, comillas simples y comillas dobles. Puede eliminarlas de la consideración con quotes=NA. Algunas veces también es necesario elimine el valor predeterminado 'comment.char' en "#", y puede ser útil cambiar 'as.is' a TRUE para evitar que las cadenas se conviertan en factores.

+4

Creo que ahora debería ser 'quote = NULL' not' quotes = NA' a partir de la versión más reciente. – JayCo

+0

Tuve el mismo problema, pero estaba tratando de importar una lista que tenía comillas que tenían que permanecer en la lista importada. Usar comillas = NULL funcionó para mí (al igual que la respuesta a continuación, quotes = "\\". Agradezco las respuestas reales en lugar de "lea el manual de ayuda y espero que pueda encontrarlo", así que gracias. En mi caso utilicé> variable <- read.table ("datafile.txt", quote = NULL) y las citas salieron bien –

1

Estableciendo el parámetro quote = "\\" en read.table debería hacer el truco.

+1

Bueno, podría ser, pero ¿te das cuenta de lo que harás? –

Cuestiones relacionadas