0

値が区切り記号で区切られている utf-8 でエンコードされたファイル test.txt があります。

a   b   c
小   小   大
小   大   小
大   小   小

そして、コマンドを使用してデータを読み取るために読み取ります

Sys.setlocale("LC_CTYPE", "Chinese")
data <- read.delim("test.txt",encoding="UTF-8")

ただし、データは出力付きのデータフレームとして読み取られます

[1] X.U.FEFF.a b          c         
<0 rows> (or 0-length row.names)

私のシステムはWindows 7です

データを正しく読み取るには?

4

1 に答える 1

2

私はちょうど試しread.csvてみましたが、うまくいきます。私はあなたのコードをテストread.delimしました。

> a <- read.csv('/tmp/test.txt', sep="\t", quote="", stringsAsFactors=FALSE)
> str(a)
'data.frame':   3 obs. of  3 variables:
 $ a: chr  "小" "小" "大"
 $ b: chr  "小" "大" "小"
 $ c: chr  "大" "小" "小"
> a
   a  b  c
1 小 小 大
2 小 大 小
3 大 小 小

> data <- read.delim("/tmp/test.txt", encoding="utf-8")
> data
   a  b  c
1 小 小 大
2 小 大 小
3 大 小 小

次に、Sys.setlocaleコマンドを試しましたが、うまくいきませんでした。これは、ロケールをドイツ語に設定してテストした後、コマンド自体が無効であることを示しています。

# ?Sys.setlocale:
# "Attempts to set an invalid locale are ignored. There may or may not be a warning, depending on the OS."
> Sys.setlocale("LC_CTYPE", "Chinese")
[1] ""
Warning message:
In Sys.setlocale("LC_CTYPE", "Chinese") :
  OS reports request to set locale to "Chinese" cannot be honored
> Sys.setlocale("LC_TIME", "de_DE")  # Mac OS X, in UTF-8
[1] "de_DE"
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/de_DE/en_US.UTF-8"

ロケールを中国語に正常に設定するには、これを試すことができます(ここから引用):

Sys.setlocale("LC_ALL","zh_CN.utf-8")
> Sys.getlocale()
[1] "zh_CN.utf-8/zh_CN.utf-8/zh_CN.utf-8/C/zh_CN.utf-8/en_US.UTF-8"
于 2013-11-03T16:12:06.370 に答える