R имеет встроенные функции union и correct , которые работают с векторами и интерпретируют их как множества. Это имеет побочный эффект, заключающийся в том, что дублирующиеся записи удаляются:
> x <- c(1,2,3,3,1)
> y <- c(1,1,2)
> union(x,y)
[1] 1 2 3
> intersect(x,y)
[1] 1 2
Есть ли возможность обработать векторы как мультимножества (также известные как сумки ), например в SQL модификатор ALL выполняет?
Результаты должны быть (1,1,1,1,2,2,3,3) для union и (1,1, 2) для пересекаются .
Дополнение (пояснение): Элемент, который встречается n раз в x и m раз в y , должно быть
- n + m раз в объединении
- мин ( n , m ) раз на пересечении
- max ( n - m , 0 ) раз в разнице ( x кроме y )