以下代码失败
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
任何人都可以帮助确定我做错了什么。它应该找到数据。
答案 0 :(得分:5)
与lubridate
没有任何关系。
您的问题是范围界定。您的data.table中有一列b
。 data.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