为什么基R中的Date类由双精度

时间:2019-07-18 07:53:20

标签: r date optimization

R中的Date类有一个double支持:

> dput(Sys.Date())
structure(18095, class = "Date")
> class(unclass(Sys.Date()))
[1] "numeric"

为什么不整数?这样可以节省一半的内存(每个日期4个字节),并且似乎至少在简单的情况下可以工作:

> structure(18095L, class = "Date")
[1] "2019-07-18"

编辑:

评论使用小数日期提及。我对一般使用小数日期感到谨慎,但是R的行为可能绝对不是您期望的:

> as.POSIXct(structure(18095.5, class = "Date"))
[1] "2019-07-18 14:00:00 CEST"

我仍然可以看到为什么这是正确的结果。

1 个答案:

答案 0 :(得分:1)

我在data.table问题跟踪器中偶然发现了this post。 Matt Dowle在其中提到R core告诉他,确实使用double来支持小数日期并确保Date类在诸如mean()之类的操作下被关闭。我认为这不是一个好主意,幸运的是,像我这样的人现在有IDateTime:)