28

R は内部で Unicode 文字を適切に処理しているように見えますが、そのような UTF-8 Unicode 文字を使用して R でデータ フレームを出力することはできません。これを強制する方法はありますか?

data.frame(c("hīersumian","ǣmettigan"))->test
write.table(test,"test.txt",row.names=F,col.names=F,quote=F,fileEncoding="UTF-8")

出力テキスト ファイルは次のようになります。

hiersumian <U+01E3>mettigan

Windows 環境 (Windows 7) で R バージョン 3.0.2 を使用しています。

編集


回答では、R がファイルを UTF-8 で正しく書き込んでおり、ファイルを表示するために使用しているソフトウェアに問題があることが示唆されています。R ですべてを行っているコードを次に示します。UTF-8 でエンコードされたテキスト ファイルを読み込んでいますが、R はそれを正しく読み取ります。次に、R はファイルを UTF-8 で書き出し、再度読み込むと、正しい Unicode 文字が失われます。

read.table("myinputfile.txt",encoding="UTF-8")->myinputfile
myinputfile[1,1]
write.table(myinputfile,"myoutputfile.txt",row.names=F,col.names=F,quote=F,fileEncoding="UTF-8")
read.table("myoutputfile.txt",encoding="UTF-8")->myoutputfile
myoutputfile[1,1]

コンソール出力:

> read.table("myinputfile.txt",encoding="UTF-8")->myinputfile
> myinputfile[1,1]
[1] hīersumian
Levels: hīersumian ǣmettigan
> write.table(myinputfile,"myoutputfile.txt",row.names=F,col.names=F,quote=F,fileEncoding="UTF-8")
> read.table("myoutputfile.txt",encoding="UTF-8")->myoutputfile
> myoutputfile[1,1]
[1] <U+FEFF>hiersumian
Levels: <U+01E3>mettigan <U+FEFF>hiersumian
> 
4

3 に答える 3