Поиск дубликатов в списке, включая перестановки
Я хотел бы определить, содержит ли список какие-либо дубликаты элементов, рассматривая перестановки как эквивалентные. Все векторы имеют одинаковую длину.
Каков наиболее эффективный способ (самое короткое время работы) для достижения этой цели?
## SAMPLE DATA
a <- c(1, 2, 3)
b <- c(4, 5, 6)
a.same <- c(3, 1, 2)
## BOTH OF THSE LISTS SHOULD BE FLAGGED AS HAVING DUPLICATES
myList1 <- list(a, b, a)
myList2 <- list(a, b, a.same)
# CHECK FOR DUPLICATES
anyDuplicated(myList1) > 0 # TRUE
anyDuplicated(myList2) > 0 # FALSE, but would like true.
Сейчас я прибегаю к сортировке каждого члена списка перед проверкой на наличие дубликатов.
anyDuplicated( lapply(myList2, sort) ) > 0
Мне интересно, есть ли более эффективная альтернатива. Кроме того, в?duplicated
В документации указано, что «Использование этого для списков потенциально медленное» Есть ли другие функции, более подходящие для списков?