为什么无限远的日期看起来像NA,但就像日期一样?

时间:2015-05-08 16:42:59

标签: r date infinity

当我使用Infinity将数据传入R时,我试图找出处理Postgresql在时间戳中表示-InfinityRPostgreSQL的能力的最佳方法。当我试图在R中表示无限日期时,我发现了一些奇怪的行为。

我可以尝试以下列方式创建负数和正数无穷大的日期:

❥ as.Date(-1/0, origin="1970-01-01")
[1] NA
❥ as.Date(1/0, origin="1970-01-01")
[1] NA

它们似乎都是NA。然而,当比较它们时,似乎有一种理解,即一种比另一种更小。

❥ as.Date(-1/0, origin="1970-01-01") < as.Date(1/0, origin="1970-01-01")
[1] TRUE
❥ as.Date(-1/0, origin="1970-01-01") > as.Date(1/0, origin="1970-01-01")
[1] FALSE
❥ as.Date(1/0, origin="1970-01-01") > as.Date("1970-01-01")
[1] TRUE
❥ as.Date(1/0, origin="1970-01-01") < as.Date("1970-01-01")
[1] FALSE

如果他们都转换为NA,R如何知道差异?

1 个答案:

答案 0 :(得分:13)

他们无法转换为NA,这就是他们的印刷方式。

R> d <- as.Date(-Inf, origin="1970-01-01")
R> is.na(d)
# [1] FALSE
R> is.infinite(d)
# [1] TRUE

如果您希望它们以不同方式打印,您可以覆盖print.Date方法并为+/-无穷大添加特殊情况。