在R中,为什么match函数无法找到现有的匹配项

时间:2019-05-05 20:40:43

标签: r match which

我有一个日期向量(包括时间),并试图使用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为什么找不到明显存在的匹配感到困惑。

任何人都可以了解发生的事情以及我的示例是否有些奇怪?

谢谢。

1 个答案:

答案 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创建