Windows
R

WindowsのRでunknown timezoneのエラーが出た

More than 1 year has passed since last update.

素人の備忘録。
検索しても全然情報がなかったので。

状況

WindowsのRでSys.time()を使ったらGMTで返されたうえにエラーが出た。

> Sys.time()
[1] "2017-07-17 04:25:22 GMT"
 警告メッセージ: 
1:  as.POSIXlt.POSIXct(x, tz) :  unknown timezone 'Asia/Tokyo'
2:  as.POSIXlt.POSIXct(x, tz) :  unknown timezone 'GMT'
3:  as.POSIXlt.POSIXct(x, tz) :  unknown timezone 'America/New_York'

原因

timezoneの情報は%R_HOME%/share/zoneinfo以下にある。

%R_HOME%/etc/Rcmd_environをコピーして.Renvironを作成していたが、その中の以下の部分が問題だった。

R_SHARE_DIR=${R_HOME}/share

Sys.getenv("R_SHARE_DIR")で見てみると、なぜか/で区切られてないパスが出てきた。

(推測:Rのインストールディレクトリが\マーク区切りでレジストリに登録されているのが問題?)

解決

.Renvironの該当の行を削除したらJSTの時間が出てきた。