使用rollends滚动data.table

use*_*714 8 r data.table

roll=-Inf在定义时遇到了麻烦rollends=FALSE.如果rollends未设置或设置为TRUE,则会看到预期结果.我将不胜感激任何建议.

library(data.table)

dt1 = data.table(Date=seq(from=as.Date("2013-01-03"),
                          to=as.Date("2013-06-27"), by="1 week"),
                 key="Date")[, ind:=.I]
dt2 = data.table(Date=seq(from=as.Date("2013-01-01"),
                          to=as.Date("2013-06-30"), by="1 day"),
                 key="Date")
Run Code Online (Sandbox Code Playgroud)

我希望在下面的输出中看到2013-01-052013-06-26填充.

dt1[dt2, roll=-Inf, rollends=FALSE]
           Date ind
  1: 2013-01-01  NA
  2: 2013-01-02  NA
  3: 2013-01-03   1
  4: 2013-01-04   2
  5: 2013-01-05  NA
 ---               
177: 2013-06-26  NA
178: 2013-06-27  26
179: 2013-06-28  NA
180: 2013-06-29  NA
181: 2013-06-30  NA
Run Code Online (Sandbox Code Playgroud)

这是按预期工作的,ind数据是前滚的,但不是在定义的端点之外dt1 data.table.

dt1[dt2, roll=-Inf]
           Date ind
  1: 2013-01-01   1
  2: 2013-01-02   1
  3: 2013-01-03   1
  4: 2013-01-04   2
  5: 2013-01-05   2
 ---               
177: 2013-06-26  26
178: 2013-06-27  26
179: 2013-06-28  NA
180: 2013-06-29  NA
181: 2013-06-30  NA
Run Code Online (Sandbox Code Playgroud)

Mat*_*wle 8

你是对的.这看起来像一个bug.

更新:现在修复于v1.8.11(提交980).来自新闻:

X[Y,roll=-Inf,rollends=FALSE]如果Y被键入,则没有正确地滚动中间.如果Y没有键入或rollends保留为默认[ c(TRUE,FALSE)roll<0],则可以.感谢user338714的报道.测试补充说.

谢谢你这个好问题!