鉴于以下 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 行,引用中的 index==6 行与 dat 中的 index==5.9 行匹配,至少我对最近的理解是这样。
这是预期的行为吗?
使用 R 3.3.2,数据表 1.10.4
最佳答案
因为 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
关于R data.table roll ="nearest"实际上不是最近的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169249/