Rでのエンコードの問題

このブログは絶賛放置中なのだが、とりあえず備忘を。shift-jis環境の人のdata.frameオブジェクトをもらったらどうするのか。(自分のロケールがen_US.UTF-8とかだとして)

変更するのが変数名だけなら

iconvを使うのが楽。

colnames(original.obj) <- iconv(colnames(original.obj),"cp932","UTF-8")

変数の値までshift-jisなら

windows環境ならロケールそのものを変えてしまった方が楽。*1

Sys.setlocale("LC_ALL","Japanese") #windows OS

追記:これが一番楽だと言うことが判明

Tab-Delimファイルとして保存して、エンコードを指定して開き直す。考えてみれば当たり前か。

write.table(as.matrix(original.data),file="original.table.txt",sep="\t",quote=F)
data.use <- read.table(file("./original.table.txt",encoding="cp932"),sep="\t")

*1:shift-jis(っていうか、cp932)環境で働くのが嫌じゃなければ。私は嫌ですが