鉴于以下data.tables我很惊讶5.9指数与5而不是6相匹配。
我不太明白发生了什么。
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行的参考与dat中的索引== 5.9行匹配,至少对于我对最近的行的理解。
这是预期的行为吗?
使用R 3.3.2,data.table 1.10.4
答案 0 :(得分: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