Cadena de multibyte inválida en read.csv

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 'ΊOyёΓ،_񓙂̏󋵁@(TEw񍐋@փx[Xj' 

Traté de cambiar la encoding ( 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 encoding diferente que deba usarse o hay algún otro problema?

    Encoding establece la encoding de una cadena de caracteres. No establece la encoding 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="")))) 

    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")

    El paquete readr del universo tidyverse podría ayudar.

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

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

    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

    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.

    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!