duplicated
接受列表作为它的主要论据。所以你可以使用
which(duplicated(mylist1) | duplicated(mylist1, fromLast=TRUE))
[1] 3 4 5 6 7
为你的第一个例子。请注意,这不会区分带有公共元素的列表元素组,但只会为具有相同元素的元素返回TRUE。
对于第二个示例数据集,您可以使用以下方法来查找组的位置
# get group values as integers
groups <- as.integer(factor(sapply(mylist2,
function(x) paste(sort(x), collapse=""))))
# return list of groups
lapply(seq_len(max(groups)), function(x) which(x == groups))
[[1]]
[1] 2
[[2]]
[1] 5 6 7
[[3]]
[1] 1 3 4
数据
mylist1 <-
list(c("yes", "no"), c("no", "other", "up", "down"), c("no",
"yes", "maybe"), c("no", "yes", "maybe"), c("no", "yes", "maybe"
), c("no", "yes", "maybe"), c("no", "yes", "maybe"))
mylist2 <-
list(c("yes", "no"), c("no", "other", "up", "down"), c("no",
"yes"), c("no", "yes"), c("no", "yes", "maybe"), c("no", "yes",
"maybe"), c("no", "yes", "maybe"))
我希望固定它@lmo –
一个直接的方法是'ML2 = lapply(MYLIST,排序);匹配(ml2,unique(ml2))' –
@alexis_laz您的解决方案不提供每个匹配匹配列表的位置!检查akrun的答案。无论如何感谢您的时间! –