我有一个包含列表的列的数据表。我想检查列表列中是否存在另一列作为。
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
答案 0 :(得分:2)
您可以使用mapply
函数将函数%in%
应用于两个向量:a
和b
。实际上,它需要一对向量(列表),并为每个索引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