read.csv中的多字节string无效

我正在尝试导入日文版的csv。 此代码:

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

返回以下错误:

 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' 

我尝试更改编码( Encoding(url) <- 'UTF-8' ,也latin1),并尝试删除read.csv参数,但在每种情况下收到相同的“无效多字节string”消息。 是否有应该使用不同的编码,还是有其他一些问题?

Encoding设置string的编码。 它不会设置string表示的文件的编码,这就是你想要的。

尝试"UTF-8"后,这对我"UTF-8"

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

你可能想要跳过前面的16行,并分别读入头文件。 无论哪种方式,还有相当多的清理工作要做。

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

您可能遇到过此问题,因为系统区域设置不兼容,请尝试使用此代码Sys.setlocale(“LC_ALL”,“C”)设置系统区域设置

来自整个宇宙的readr包可能会有所帮助。

您可以使用local()函数及其编码参数,通过read_csv()函数的本地参数来设置编码:

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

对于那些使用这个问题Rattle这是我如何解决它:

  1. 首先请确保退出拨浪鼓,以便在R命令提示符处
  2. > library (rattle) (如果没有这样做)
  3. > crv$csv.encoding="latin1"
  4. > rattle()
  5. 你现在应该能够继续。 即导入您的csv>执行>模型>执行

这对我有用,希望能帮助疲惫的旅客

如果您正在尝试将文件导入到最初是Excel文件的R中。 请确保您打开原始文件并另存为csv并在导入到R时为我解决了此错误。

我有一个与科学文章类似的问题,并在这里find了一个很好的解决scheme: http : //tm.r-forge.r-project.org/faq.html

通过使用下面的代码行:

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

您将多字节string转换为hex代码。 我希望这有帮助。