2017-05-24 59 views
5

鑑於以下data.tables我很驚訝地看到,5,而不是6[R data.table卷=「最近」實際上不是最近

我不太明白是怎麼回事了5.9折射率匹配。

dat <- data.table(index = c(4.3, 5.9, 1.2), datval = runif(3)+10, 
datstuff="test") 
reference <- data.table(index = 1:10, refjunk = "junk", refval = runif(10)) 

dat[, dat_index := index] 
reference[dat, roll="nearest", on="index"] 

我期望看到3行的索引== 6行的引用與索引== 5.9行的dat匹配,至少對於我的理解最近。

這是預期的行爲?

基於R 3.3.2,data.table 1.10.4

+0

索引是整數,整數在downcast時被截斷。 – awiebe

回答

6

因爲1:10是整數向量,在加入對整數進行,as.integer(5.9)是5

您可以使用1:10+0建設一個數字:

reference <- data.table(index = 1:10+0, ref_index=1:10, refjunk = "junk", refval = runif(10)) 
reference[dat, roll="nearest", on="index"] 

    index ref_index refjunk  refval datval datstuff dat_index 
1: 4.3   4 junk 0.09868848 10.37403  test  4.3 
2: 5.9   6 junk 0.60545607 10.86906  test  5.9 
3: 1.2   1 junk 0.50005336 10.07994  test  1.2