我有两个数据表.最初的版本如下所示:
library(data.table)
DT <- data.table(
x = rep(c("b", "a", "c"), each = 3),
v = rep(c("d", "e", "f"), times = 3),
foo = 10:18
)
DT
#> x v foo
#> 1: b d 10
#> 2: b e 11
#> 3: b f 12
#> 4: a d 13
#> 5: a e 14
#> 6: a f 15
#> 7: c d 16
#> 8: c e 17
#> 9: c f 18
第二个看起来像这样:
X <- data.table(x = c("c", "b"), v = c("d", "f"))
X
#> x v
#> 1: c d
#> 2: b f
我想要将DT
中值在X
列值中的行设置为子集.
这就是我想要做的:
DT[x %chin% X$x & v %chin% X$v]
#> x v foo
#> 1: b d 10
#> 2: b f 12
#> 3: c d 16
#> 4: c f 18
但我有50个这样的专栏.
有没有一种简洁的data.table
种方法来实现这一点?
我try 使用on
参数,但没有返回所需的输出:
DT[X, on = colnames(X)]
#> x v foo
#> 1: c d 16
#> 2: b f 12