R: cadena multibyte no válida

Uso read.delim (filename) sin ningún parámetro para leer un archivo de texto delimitado por tabulaciones en R.

df = read.delim(file) 

Esto funcionó según lo previsto. Ahora tengo un mensaje de error raro y no puedo entenderlo:

 Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0L)) : invalid multibyte string at '' Calls: read.delim -> read.table -> type.convert Execution halted 

¿Alguien puede explicar lo que es una cadena multibyte? ¿Qué quiere decir fd? ¿Hay otras formas de leer un archivo de tabs en R? Tengo encabezados de columna y líneas que no tienen datos para todas las columnas.

Me doy cuenta de que esto es bastante tarde, pero tuve un problema similar y pensé en publicar lo que funcionó para mí. Utilicé la utilidad iconv (por ejemplo, "iconv file.pcl -f UTF-8 -t ISO-8859-1 -c" ). La opción “-c” omite caracteres que no se pueden traducir.

Tuve un problema similarmente extraño con un archivo del progtwig e-prime (edat -> conversión SPSS), pero luego descubrí que hay muchas codificaciones adicionales que puede usar. esto hizo el truco para mí:

 tbl < - read.delim("dir/file.txt", fileEncoding="UCS-2LE") 

Si quieres una solución R, aquí hay una pequeña función de conveniencia que a veces uso para encontrar dónde acecha el personaje ofensivo (multiByte). Tenga en cuenta que es el siguiente personaje de lo que se imprime. Esto funciona porque print funcionará bien, pero substr arroja un error cuando hay caracteres multibyte presentes.

 find_offending_character < - function(x, maxStringLength=256){ print(x) for (c in 1:maxStringLength){ offendingChar <- substr(x,c,c) #print(offendingChar) #uncomment if you want the indiv characters printed #the next character is the offending multibyte Character } } string_vector <- c("test", "Se\x96ora", "works fine") lapply(string_vector, find_offending_character) 

Arreglé ese personaje y lo ejecuté de nuevo. Espero que ayude a alguien que encuentre el error de invalid multibyte string .

¡Esto me pasó porque tenía el símbolo ‘copyright’ en uno de mis hilos! Una vez que se eliminó, se solucionó el problema.

Una buena regla general, asegúrese de que los caracteres que no aparecen en su teclado se eliminen si está viendo este error.

Descubrí que Leafpad es un editor de texto adecuado y simple para ver y guardar / convertir en ciertos conjuntos de caracteres, al menos en el mundo de Linux.

Usé esto para guardar el Latin-15 en UTF-8 y funcionó.