50

日本語の 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パラメータを削除しようとしましたが、いずれの場合も同じ「無効なマルチバイト文字列」メッセージを受け取りました。使用すべき別のエンコーディングがありますか、それとも他の問題がありますか?

4

9 に答える 9

88

Encoding文字列のエンコーディングを設定します。文字列で表されるファイルのエンコーディングを設定しません。これは、必要なものです。

試した後、これは私にとってはうまくいきました"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=""))))
于 2013-01-16T16:39:19.387 に答える
12

システム ロケールの非互換性が原因で、この問題が発生した可能性があります。このコードでシステム ロケールを設定してみてください。Sys.setlocale("LC_ALL", "C")

于 2015-04-12T05:27:58.590 に答える
1

同じエラーが発生し、上記のすべてを試しても無駄でした。R 3.4.0 から 3.4.3 にアップグレードしたときに問題が解消されたので、R のバージョンが最新でない場合は更新してください。

于 2018-03-09T11:11:42.633 に答える