R入門
環境
最終更新:
r-intro
目次
日付時刻とタイムゾーン
現在の環境の日付とタイムゾーンを得る
日付を得るにはSys.time関数を、タイムゾーンを得るにはSys.timezone関数を使う。なお、Sys.time関数の戻り値のクラスはPOSIXct、Sys.timezoneは文字列である。
> Sys.time()
[1] "2014-11-29 20:55:53 JST"
> class(Sys.time())
[1] "POSIXct" "POSIXt"
> Sys.timezone()
[1] "Asia/Tokyo"
> class(Sys.timezone())
[1] "character"
現在の環境のタイムゾーンを得る
Sys.timezone関数を使う。以下は、Windowsの日本語版バージョン4.3.1で実行した例。
> Sys.timezone()
[1] "Asia/Tokyo"
タイムゾーンIDを一覧形式で得る
その環境下に搭載されているタイムゾーンを識別するID(タイムゾーンID)を一覧形式で得るには、OlsonNames関数を使う。
> OlsonNames()
[1] "Africa/Abidjan" "Africa/Accra"
[3] "Africa/Addis_Ababa" "Africa/Algiers"
[5] "Africa/Asmara" "Africa/Asmera"
(以下、表示省略)
> grep("Tokyo", OlsonNames())
[1] 322
> grep("Tokyo", OlsonNames(), value = TRUE)
[1] "Asia/Tokyo"
ロケール
ロケールの確認と設定
ロケールの確認はSys.getlocale関数を使う。
ウィンドウズ版は4.1.3までは、デフォルトのロケールは「Japanese_Japan.932」。
> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932"
4.2.0以降は「Japanese_Japan.utf8」になった。
> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.utf8;LC_CTYPE=Japanese_Japan.utf8;LC_MONETARY=Japanese_Japan.utf8;LC_NUMERIC=C;LC_TIME=Japanese_Japan.utf8"
そのため、例えばこれまでファイルを読み込む際にエンコードを指定しなかった場合、スクリプトが動作しない可能性がある。
その他
Windows版RでShift_JISを使う
Windows版は、バージョン4.1.3まではデフォルトで扱う日本語の文字コードはShift_JISだったが、次の4.2.0からはUTF-8になった。これをShift_JISにする場合はSys.setlocale関数に「Japanese_Japan.932」を指定して実行すればよい。漢字「石」はUTF-8による文字コードは0xe79fb3、Shift_JISは0x90ceであるので、文字コードが切り替わったことがわかる。
> R.Version()$platform
[1] "x86_64-w64-mingw32"
> R.Version()$version.string
[1] "R version 4.4.1 (2024-06-14 ucrt)"
> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.utf8;LC_CTYPE=Japanese_Japan.utf8;LC_MONETARY=Japanese_Japan.utf8;LC_NUMERIC=C;LC_TIME=Japanese_Japan.utf8"
> localeToCharset()
[1] "UTF-8"
> ra <- charToRaw("石見舞菜香")
> print(ra)
[1] e7 9f b3 e8 a6 8b e8 88 9e e8 8f 9c e9 a6 99
> Sys.setlocale(locale = "Japanese_Japan.932")
[1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932"
警告メッセージ:
Sys.setlocale(locale = "Japanese_Japan.932") で:
using locale code page other than 65001 ("UTF-8") may cause problems
> localeToCharset()
[1] "CP932"
> ra <- charToRaw("石見舞菜香")
> print(ra)
[1] 90 ce 8c a9 95 91 8d d8 8d 81