我有一个包含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}}
答案 0 :(得分:3)
您可以将Map
与interesect
:
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