R data.table roll ="nearest"实际上不是最近的

标签 r data.table

鉴于以下 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/

相关文章:

r - 我应该使用什么版本的 R 在 ubuntu 15.04 中升级 R

sql - data.table 连接的时间

r - data.table 在数字和文本变量上分别分组

r - 优化 R 中的循环

r - R 中的 colMeans 函数并遇到大小为 1 的列的问题

r - 在 r 中安装素食主义者时出错

r - 使用 ggplot() 更改线条颜色

r - 为什么是enquo + !!最好替代+评估

r - 根据行索引在 R 中创建索引变量

r - 结束日期与开始日期之间的日期差异