Pregunta

Considere el siguiente archivo separado por comas.Para simplificar, permita que contenga una línea:


'I am quoted','so, can use comma inside - it is not separator here','but can\'t use escaped quote :=('

Si intentas leerlo con el comando

table <- read.csv(filename, header=FALSE)

la línea se separará en 4 partes, porque la línea contiene 3 comas.De hecho, quiero leer solo 3 partes, una de las cuales contiene una coma.Allí la bandera de cotización viene en busca de ayuda.Lo intenté:

table <- read.csv(filename, header=FALSE, quote="'")

pero eso cae con error "incomplete final line found by readTableHeader on table".Eso sucede debido al número impar (siete) de comillas.

read.table() así como scan() tener parámetro allowEscapes, pero configurándolo en TRUE no ayuda.Está bien, porque desde help(scan) puedes leer:

Los escapes que se interpretan son los caracteres de control ' a, b, f, n, r, t, v', ......Cualquier otro personaje escapado es tratado como en sí mismo, incluida la barra insegura

Sugiera cómo leería dichos archivos csv citados, que contienen archivos escapados. \' citas.

¿Fue útil?

Solución

Una posibilidad es utilizar readLines() para que todo se lea tal como está y luego proceda reemplazando el carácter de comillas por algo más, por ejemplo:

tt <- readLines("F:/temp/test.txt")
tt <- gsub("([^\\]|^)'","\\1\"",tt) # replace ' by "
tt <- gsub("\\\\","\\",tt) # get rid of the double escape due to readLines

Esto le permite leer el vector tt usando un textConnection

zz <- textConnection(tt)
read.csv(zz,header=F,quote="\"") # give text input
close(zz)

No es la solución más hermosa, pero funciona (siempre que no tenga un carácter " en algún lugar del archivo, por supuesto...)

Otros consejos

read_delim del paquete lector puede manejar comillas escapadas, usando los argumentos escape_double y escape_backslash.

read_delim(file, delim=',', escape_double=FALSE, escape_backslash=TRUE, quote="'")

(Tenga en cuenta que las versiones anteriores de readr no admiten correctamente las nuevas líneas entrecomilladas en los encabezados CSV: https://github.com/tidyverse/readr/issues/784)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top