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的答案。無論如何感謝您的時間! –