たまたまタイ文字で書かれているウェブサイトからデータを取得するコードがあります。プロジェクトの一環として、タイ語のテキストの一部を置き換える必要があります。小さな例を次に示します。
thaidf <- data.frame(thdate = c("31 พฤษภาคม 2555","30 เมษายน 2555"),
value = c(100,110))
english_months <- seq(1:12)
thai_months <- c('มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม')
print(thaidf)
for (ii in seq_along(thai_months)) {
## convert months in Thai script to numerical
thaidf$thdate <- (sapply(thaidf$thdate,
function(x) {gsub(thai_months[ii],
english_months[ii], x, useBytes = TRUE)}))
}
print(thaidf)
このコードをEmacs/ESS内から実行すると、機能しません。下のスクリーンショットでは、コードが実行されたときにコンソールがタイ語の文字を画面に出力できず、また、の変数を認識できないthaidf$thdate
ため、gsub()
呼び出しが成功しないことに注意してください。31が日、5が月、2555が仏教の年である「315 2555」を生成する代わりに、「3112555」を出力します。
ただし、この同じコードをコピーしてRGuiフロントエンドに貼り付けると、正常に機能します。以下に示すように、文字を印刷し、gsub()
予想どおり、タイ文字をラテン数字に正しく置き換えます。下のスクリーングラブからわかるように、「5月」のタイ文字は「5」になり、「4月」のタイ文字は「4」になります。
私が最初に考えたのは、フォントの問題かもしれないということでしたが、タイ語のフォントはEmacsバッファーに表示されているようで、コードをCcMbで実行すると認識されません。なぜこれが起こるのですか?どうすればそれを防ぐことができますか?
sessionInfo()Rバージョン2.15.0パッチ(2012-06-03 r59501)プラットフォーム:i386-pc-mingw32 / i386(32ビット)
ロケール:
1 LC_COLLATE = English_United Kingdom.1252
2 LC_CTYPE = English_United Kingdom.1252
[3] LC_MONETARY = English_United Kingdom.1252 [4] LC_NUMERIC = C
[5] LC_TIME = English_United Kingdom.1252
添付の基本パッケージ: 1統計グラフィックgrDevicesutilsデータセットメソッドベース