Rにおける日付(Date型)のデフォルトの原点は1970年1月1日だぞっと

前振り

数値を日付に変換する時には基準となる日付が必要なわけですが、Rの場合、デフォルトだと「1970年1月1日」になってるようだ。
この話のモチベーションとしては別に俺的には日付のまま処理したいんだけど、lapplyの結果を行列にしたりデータフレームにしたりしてるといつの間にか日付が数値になってて、どうやって直そうかとアワアワするのをなくすことだ。

本題

例えば今日の日付をGETしておく

> today <- Sys.Date()
> today
[1] "2014-10-10"

そして、それを数値にしてみる。

> today_as_number <- as.numeric(today)
> today_as_number
[1] 16353

これを日付に戻そうとas.Date関数を噛ませると、originを指定してないと怒られる。

> as.Date(today_as_number)
Error in as.Date.numeric(today_as_number) : 
   'origin' を指定しなければなりません 

ここで、originとして1970年1月1日を指定すると元の日付に戻るので、これで正しそうだぞとわかる。

> as.Date(today_as_number, origin="1970-01-01")
[1] "2014-10-10"

lubridate使えばこんなことにはならないのかなぁ。

ここに答えがあったんや

- [Rd] as.Date.numeric origin default