r read.csv

Cadena de multibyte inválida en read.csv



(7)

El paquete readr del universo tidyverse podría ayudar.

Puede establecer la codificación a través del argumento local de la función read_csv() utilizando la función local() y su argumento de codificación:

read_csv(file = "http://www.mof.go.jp/international_policy/reference/itn_transactions_in_securities/week.csv", skip = 14, local = locale(encoding = "latin1"))

Estoy tratando de importar un csv que está en japonés. Este código:

url <- ''http://www.mof.go.jp/international_policy/reference/itn_transactions_in_securities/week.csv'' x <- read.csv(url, header=FALSE, stringsAsFactors=FALSE)

devuelve el siguiente error:

Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0L)) : invalid multibyte string at ''<91>ΊO<8b>y<82>ёΓ<e0><8f>،<94><94><84><94><83><8c>_<96>񓙂̏󋵁@(<8f>T<8e><9f><81>E<8e>w<92><e8><95>񍐋@<8a>փx<81>[<83>X<81>j''

Traté de cambiar la codificación ( Encoding(url) <- ''UTF-8'' y también a latin1) y traté de eliminar los parámetros read.csv, pero recibí el mismo mensaje de "cadena multibyte inválida" en cada caso. ¿Hay alguna codificación diferente que deba usarse o hay algún otro problema?


Es posible que haya encontrado este problema debido a la incompatibilidad de la configuración regional del sistema, intente configurar la configuración regional del sistema con este código Sys.setlocale("LC_ALL", "C")


Para aquellos que usan Rattle con este problema, así es como lo resolví:

  1. Primero asegúrate de salir de sonajero para que estés en el prompt del comando R
  2. > library (rattle) (si no lo hizo ya)
  3. > crv$csv.encoding="latin1"
  4. > rattle()
  5. Ahora debería poder continuar. es decir, importe su csv> Ejecutar> Modelo> Ejecutar, etc.

Eso funcionó para mí, con suerte eso ayuda a un viajero cansado


Si el archivo que intenta importar en R fue originalmente un archivo de Excel. Asegúrese de abrir el archivo original y Guardar como un csv y eso solucionó este error al importarlo a R.


Tuve el mismo error e intenté todo lo anterior sin ningún resultado. El problema desapareció cuando actualicé de R 3.4.0 a 3.4.3, así que si su versión R no está actualizada, ¡actualícela!


Tuve un problema similar con artículos científicos y encontré una buena solución aquí: http://tm.r-forge.r-project.org/faq.html

Al usar la siguiente línea de código:

tm_map(yourCorpus, content_transformer(function(x) iconv(enc2utf8(x), sub = "byte")))

usted convierte las cadenas multibyte en código hexadecimal. Espero que esto ayude.


Encoding establece la codificación de una cadena de caracteres. No establece la codificación del archivo representado por la cadena de caracteres, que es lo que desea.

Esto funcionó para mí, después de probar "UTF-8" :

x <- read.csv(url, header=FALSE, stringsAsFactors=FALSE, fileEncoding="latin1")

Y es posible que desee omitir las primeras 16 líneas y leer en los encabezados por separado. De cualquier manera, todavía hay bastante limpieza para hacer.

x <- read.csv(url, header=FALSE, stringsAsFactors=FALSE, fileEncoding="latin1", skip=16) # get started with the clean-up x[,1] <- gsub("/u0081|`", "", x[,1]) # get rid of odd characters x[,-1] <- as.data.frame(lapply(x[,-1], # convert to numbers function(d) type.convert(gsub(d, pattern=",", replace=""))))