我有一个日期向量(包括时间),并试图使用FILTER
函数(实际上是FILTER
)来查看向量中是否包含另一个日期。即使我知道要搜索的日期在矢量中,OPTIONAL
也找不到它。例如,考虑以下冗长的日期时间向量,以及我要搜索的日期。
match
我当然知道%in%
在向量%in%
中,但是BEGIN <- strptime(paste("7/10/2018","05:22"),format="%m/%d/%Y %H:%M")
END <- strptime(paste("9/3/2018","23:59:59"),format="%m/%d/%Y %H:%M:%S")
SEQ <- as.POSIXlt(seq(BEGIN,END,3600))
DATE <- strptime("8/16/2018 14:22:00","%m/%d/%Y %H:%M:%S")
找不到它。
DATE
当我搜索SEQ
的特定子集时,它会成功,但是会搜索另一个几乎相同的子集。
match
关于第887个值没有什么特别的(我能说出),但是包含第888个值之前的任何内容都会导致DATE==SEQ[898]
DATE %in% SEQ
match(DATE,SEQ)
失败。我可以使用SEQ
来解决这个问题,例如
DATE %in% SEQ[888:900]
DATE %in% SEQ[888:length(SEQ)]
DATE %in% SEQ[887:900]
DATE %in% SEQ[887:length(SEQ)]
SEQ2 <- SEQ[888:900]
DATE %in% SEQ2
SEQ2 <- SEQ[887:900]
DATE %in% SEQ2
但我为match
为什么找不到明显存在的匹配感到困惑。
任何人都可以了解发生的事情以及我的示例是否有些奇怪?
谢谢。
答案 0 :(得分:0)
对我有用。这是Windows 10 R版本3.5.3(2019-03-11)-64位“伟大的真理”。
BEGIN <- strptime(paste("7/10/2018","05:22"),format="%m/%d/%Y %H:%M")
END <- strptime(paste("9/3/2018","23:59:59"),format="%m/%d/%Y %H:%M:%S")
SEQ <- as.POSIXlt(seq(BEGIN,END,3600))
DATE <- strptime("8/16/2018 14:22:00","%m/%d/%Y %H:%M:%S")
DATE %in% SEQ
#> [1] TRUE
由reprex package(v0.2.1)于2019-05-06创建