ファイル Tips 大全
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
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){だからこそ,tips でしょ(^_^;)}
終了行:
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){だからこそ,tips でしょ(^_^;)}
ページ名: