data.table - 检查一列是否在另一个(列表)列中

时间:2017-01-17 20:34:18

标签: r data.table

我有一个包含列表的列的数据表。我想检查列表列中是否存在另一列作为。

library(data.table)
dt <- data.table("a" = 1:3, "b" = list(1:2, 3:4, 5:6))

我试过了:

dt[, is_a_in_b := a %in% b]
dt
#    a   b is_a_in_b
# 1: 1 1,2     FALSE
# 2: 2 3,4     FALSE
# 3: 3 5,6     FALSE

没有给出正确的结果。所需的表格是

dt
#    a   b is_a_in_b
# 1: 1 1,2      TRUE
# 2: 2 3,4     FALSE
# 3: 3 5,6     FALSE

1 个答案:

答案 0 :(得分:2)

您可以使用mapply函数将函数%in%应用于两个向量:ab。实际上,它需要一对向量(列表),并为每个索引ix生成a[ix] %in% b[[ix]]的结果。

dt[, is_a_in_b := mapply('%in%', a, b)]

> dt
   a   b is_a_in_b
1: 1 1,2      TRUE
2: 2 3,4     FALSE
3: 3 5,6     FALSE