我最近遇到了将 POSIXlt 日期对象与日期字符串进行比较的 R 代码。
as.POSIXlt.date("2007-02-02") >= "2007-02-01"
[1] FALSE
结果,至少对我来说令人惊讶的是,结果是 FALSE。我期待 POSIXlt 对象将被强制转换为字符向量,因此不等式应该测试为 TRUE。然后我尝试了显式强制,并将任何一方强制转换为另一方的类型,结果为真。
as.character(as.POSIXlt.date("2007-02-02")) >= "2007-02-01"
[1] TRUE
和
as.POSIXlt.date("2007-02-02") >= as.POSIXlt.date("2007-02-01")
[1] TRUE
我认为将 LHS 日期对象强制为字符向量在语义上是错误的,因为然后比较将是字典顺序的,这不是预期的(尽管在这种情况下它的计算结果为 TRUE)。我对吗?
在我看来,第三个表达式是语义正确的代码。但是为什么第一个代码不起作用(它评估为 FALSE)?在比较它们之前,R 不会强制双方都使用字符向量吗?
这是我的平台信息:
R version 3.1.0 (2014-04-10) -- "Spring Dance"
Platform: x86_64-redhat-linux-gnu (64-bit)
我是 R 新手。非常感谢任何帮助。
谢谢,法尔汉