R使用带有data.table的lubridate来匹配日期

时间:2013-06-05 05:54:45

标签: r data.table lubridate

以下代码失败

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

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

1 个答案:

答案 0 :(得分:5)

lubridate没有任何关系。

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

中查找b

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

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