当我试图在R中表示无限日期时,我试图找出处理Postgresql表示能力的最佳方法,Infinity以及用于将数据传输到R -Infinity中的时间戳RPostgreSQL.在此过程中我发现了一些奇怪的行为.
我可以尝试以下列方式在负和正无穷大处创建日期:
? 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如何知道差异?
Jos*_*ich 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方法并添加+/-无穷大的特殊情况.