コンピュータ設定悪戦苦闘メモ

困ったこととその解決策のメモ.万人に有効なことは保証できませんが,お役に立てればうれしいな.

2.Windowsから持ってきたスクリプトをCentOSのRで実行する

やりたいこと:Windowsから持ってきたスクリプトCentOSのRで実行する

環境:Windows7→CentOS5.3

 

【状況】

とりあえず動くが,以下のような警告が出るのが気になる

Warning messages:
1: In grepl("\n", lines, fixed = TRUE) :
   入力文字列 92 はこのロケールでは不適切です

 

【原因】

Windowsから持ってきたスクリプトのコメント部に日本語が書いてあり,Rを動かしている端末の文字コード設定と合っていないらしい

 

スクリプトファイルの文字コードの確認方法

【確認方法その1】

emacsスクリプトファイルを開き,下部のバーを見る→S(DOS)と書いてある

【確認方法その2】

端末で以下のコマンドを実行する

$ nkf -g (スクリプトファイル名)

Shift_JISと表示された

Windowsから持ってきたんだから,確かにShift-JISだわな)

 

端末の文字コードの確認方法

$ env|grep LANG
LANG=ja_JP.EUC-JP

CentOSの方はEUCでした)

 

【解決策】

R上でスクリプトを実行する際に,スクリプトファイルの文字コードも指定する

> source("スクリプトファイル名", encoding="Shift_JIS")

【感想】

Warningは消えたけど,肝心の実験結果が悪いのは解決してくれないんよな….

 

【追記】
 毎回文字コードを指定するのがメンドクサイので,スクリプトファイルの文字コードEUCに変換したほうがよさそう.

$ nkf -e 旧スクリプトファイル > 新スクリプトファイル

#注意:旧スクリプトファイル名と新スクリプトファイル名を同じにすると中身が消えます!

EUCに変換するからnkfのオプションは-e.

#Shift-JISに変換するときは-s,UTF8に変換するときは-w