当我使用Infinity
将数据传入R时,我试图找出处理Postgresql在时间戳中表示-Infinity
和RPostgreSQL
的能力的最佳方法。当我试图在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如何知道差异?
答案 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
方法并为+/-无穷大添加特殊情况。