COLOR(RED){SIZE(30){ファイル Tips 大全}}

ファイルの入出力について

#contents
~

*文字コード

encoding="" で指定できる文字コードは,
 EUC-JP, SHIFT-JIS, UTF-8, UTF-16, ISO-2022-JP など
COLOR(RED){iconvの使える環境( capabilities() で確認できる )ならiconvlist()を実行してください}

*ソースファイルの文字コード

日本語を含む R ソースを,source("foo.R") などで読み込みたい場合,ソースの文字コードは UTF-8 で保存すべし。~
そうしないと,身に覚えのない文法エラーを指摘されて,悩んでしまうかも。
~
COLOR(RED){デフォルトはOSの環境のエンコードに依存します。日本語環境ならWinはCP932(not Shift_JIS)でMac OS XはUTF-8,*nixは貴方次第,更に言えばsourceにもencoding引数があります。}

*特定の文字コードで sink

特定の文字コードで sink するには,encoding= で指定する。EUC-JP とか SHIFT-JIS とか UTF-8 など。
 f <- file("bar.tex", open="w", encoding="EUC-JP")
 sink(f)
   R ソースコード
 sink()

*特定の文字コードのファイルを read

たとえば,日本語を含む SHIFT-JIS のファイルを FORTRAN 書式で読むときには,

 f <- file("baz.tex", open="r", encoding="SHIFT-JIS")
  R ソースコード
    x <- read.fortran(f, c("2A6"))
そのようにしないと,
 以下にエラーsubstr(text, first, last) : マルチバイト文字列が不正です
などという,身に覚えのないエラーメッセージをもらうことになるかも。
~
COLOR(RED){身に覚えが無いのなら私のバグかもしれませんし,変換不能な文字コード間のコンバートを行っている場合もあります,iconvの仕様も引きずりますし,OSのローケルも貧弱な事があります. ファイルのダンプや環境Sys.getlocale(),などお送り頂ければ調査しましょう.}~
~
COLOR(BLUE){結果を再現できる,なるべく小さなテスト材料を作りました。}~
まず,入力ファイル。encoding は SHIFT-JIS, 改行コードは CR/LF。
 以下の3行を含む
   石巻市
 岩出山町
   岩沼市
 hexdump は以下の通り
 mac > hexdump work123
 0000000 2020 90ce 8aaa 8e73 0d0a 8ae2 8f6f 8e52
 0000010 92ac 0d0a 2020 8ae2 8fc0 8e73 0d0a  
基本関数だけを使って検証しよう。
 > read.table(file(description="work123",open="r"))
 以下にエラーtype.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0)) : 
 	マルチバイト文字列が不正です
 指定すればちゃんと読める
 > read.table(file(description="work123",open="r",encoding="shift-jis"))
         V1
 1   石巻市
 2 岩出山町
 3   岩沼市
環境の情報。ご推察通りMacintosh。 OS 10.4.3。R は 2.2.0。
 > Sys.getlocale()
 [1] "ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8"

COLOR(RED){あらゆるエンコーディング間の変換を希望しているわけではないので,自動対応を望んでいるわけではないです。必要なときには必要な指定をすればよいので,別に同ってことない話ですので,いい加減にほっぽいといていただいておいてよいと思います。}~
COLOR(RED){あらゆるエンコーディング間の変換を希望しているわけではないので,自動対応を望んでいるわけではないです。必要なときには必要な指定をすればよいので,別にどうってことない話ですので,いい加減にほっぽいといていただいておいてよいと思います。}~
COLOR(RED){だからこそ,tips でしょ(^_^;)}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS