假设我有两个数据表,并且我想使用第二个数据表,其中包含一些具有一些列值的行,以调整第一个数据表。
具体来说,我想使用d2来选择其变量小于或等于值的行。
d1 = data.table('d'=1,'v1'=1:10, 'v2'=1:10)
d2 = data.table('v1'=5, 'v2'=5)
所以我希望输出为
d v1 v2
1: 1 1 1
2: 1 2 2
3: 1 3 3
4: 1 4 4
5: 1 5 5
但我希望这样做而不引用具体的名称,除非它以非常一般的方式,例如names(d2)
。
答案 0 :(得分:6)
你可以通过一些文本操作和连接来实现:
async/await
它有效,因为d2[d1, on=sprintf("%1$s>=%1$s", names(d2)), nomatch=0]
# v1 v2 d
#1: 1 1 1
#2: 2 2 1
#3: 3 3 1
#4: 4 4 1
#5: 5 5 1
扩展为:
sprintf