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

Tah*_*sha 0 r lubridate data.table

以下代码失败

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]
Run Code Online (Sandbox Code Playgroud)

随着消息

Empty data.table (0 rows) of 3 cols: date,a,b
Run Code Online (Sandbox Code Playgroud)

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

mne*_*nel 5

与此无关lubridate.

你的问题是范围界定.您b的data.table中有一列.data.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
Run Code Online (Sandbox Code Playgroud)