包含列表的两个data.frame列的相交值

时间:2016-03-04 22:47:51

标签: r dataframe

我有一个包含2个列的data.frame,其中包含值列表:

  names.t.      l1      l2    inters
1       x1    1, 0 1, 2, 0    1,0
2       x2 1, 2, 0    1, 0    1,0

我想在这个data.frame中添加一个列,它会给出l1和l2值的交集(根据交集集函数)。 不用循环会很好:)

在上述情况下,预期结果为:

s <- structure(list(names.t. = structure(1:2, .Label = c("x1", "x2"
), class = "factor"), l1 = structure(list(x1 = list("1", "0"), 
    x2 = c("1", "2", "0")), .Names = c("x1", "x2")), l2 = structure(list(
    x1 = list("1", "2", "0"), x2 = c("1", "0")), .Names = c("x1", 
"x2"))), .Names = c("names.t.", "l1", "l2"), row.names = c(NA, 
-2L), class = "data.frame")

要重现,请使用以下代码在s:

中加载原始data.frame
{{1}}

1 个答案:

答案 0 :(得分:3)

您可以将Mapinteresect

一起使用
s$inters <- Map(intersect, s$l1, s$l2)

#   names.t.      l1      l2 inters
# 1       x1    1, 0 1, 2, 0   1, 0
# 2       x2 1, 2, 0    1, 0   1, 0