2016-06-30 6 views
2

タイムスタンプの2つの配列を比較しようとしています。 %in%オペランドを使用すると、結果はFalseですが、trueになるはずです。私がそれらをnumericsにキャストすると、結果は期待通りです。タイムスタンプ%%タイムスタンプの予期しない結果

これはなぜそうなのですか?

fetchedTimestamps = c("30-1-2016 10:00:00", "30-1-2016 10:15:00", "30-1-2016 10:45:00") 
fetchedTimestamps = strptime(fetchedTimestamps, format = "%d-%m-%Y %X") 
# [1] "2016-01-30 10:00:00 CET" "2016-01-30 10:15:00 CET" "2016-01-30 10:45:00 CET" 

expectedTimestamps = seq(min(fetchedTimestamps), max(fetchedTimestamps), by = "15 mins") 
# [1] "2016-01-30 10:00:00 CET" "2016-01-30 10:15:00 CET" "2016-01-30 10:30:00 CET" "2016-01-30 10:45:00 CET" 


expectedTimestamps %in% fetchedTimestamps 
# [1] FALSE FALSE FALSE FALSE 

as.numeric(expectedTimestamps) %in% as.numeric(fetchedTimestamps) 
# [1] TRUE TRUE FALSE TRUE 

答えて

1

あなたはclass(fetchedTimestamps[1])class(expectedTimestamps[1])を比較すると、彼らは非平等につながることができた、異なります。 1つはPOSIXctであり、もう1つはPOSIXlthttps://stat.ethz.ch/R-manual/R-devel/library/base/html/DateTimeClasses.html参照)です。両方をnumericに変換すると、今度は比較可能なオブジェクトがあります。

+0

それは..ありがとうBenjamin! – Deena