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
这是我如何解决它:
- 首先请确保退出拨浪鼓,以便在R命令提示符处
-
> library (rattle)
(如果没有这样做) -
> crv$csv.encoding="latin1"
-
> rattle()
- 你现在应该能够继续。 即导入您的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代码。 我希望这有帮助。