0

以下代码失败

a = data.table(date=seq(ymd('2001-6-30'),ymd('2003-6-30'),by='weeks'))
a = a[,list(date=date,a=rnorm(105),b=rnorm(105))]

b = seq(ymd('2001-6-30'),ymd('2001-07-28'),by='weeks')

a[date %in% b]

与消息

Empty data.table (0 rows) of 3 cols: date,a,b

任何人都可以帮助确定我做错了什么。它应该找到数据。

4

1 回答 1

5

无关lubridate

您的问题是范围界定。您的 data.table 中有一个列bdata.table将首先在data.table搜索路径中查找,然后再向上查找。它无法告诉您要b在 parent.frame 中查找

因此,在父(全局)环境中重命名您的向量

B <- b
a[date %in% B]

         date           a          b
1: 2001-06-30 -1.89904968  0.9230171
2: 2001-07-07  0.08599561 -0.0440927
3: 2001-07-14 -0.28606686  0.4649957
4: 2001-07-21  0.39191680  0.2907855
5: 2001-07-28  0.18732463 -0.1743267
于 2013-06-05T06:11:34.607 回答