定义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")
我希望在下面的输出中看到
2013-01-05
和2013-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
这可以按预期工作,
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
最佳答案
你是对的。这看起来像个错误。
更新:现在已在v1.8.11中修复(提交980)。从NEWS:
如果键入X[Y,roll=-Inf,rollends=FALSE]
,则Y
不能正确滚动中间位置。取消键设置为Y
或将rollends
保留为默认值[c(TRUE,FALSE)
时为roll<0
]是可以的。感谢user338714报告。测试已添加。
感谢您提出的好问题!