Разница в сумке (аналогично setdiff (), но не для наборов) - PullRequest
4 голосов
/ 04 марта 2011

В R, есть ли какой-нибудь простой способ сделать множественные (то есть "мешочные") различия, подобные setdiff(), но сохранить порядок и кратность во входных векторах?

Например, предположим,x <- c(1,2,2,3,1,5,4,4,5,3) и y <- c(2,1,5,5).Я ищу функцию bagdiff() такую, чтобы bagdiff(x,y) было c(2,3,1,4,4,3), то есть были удалены первые вхождения элементов y в x, с кратностью.

(В моемреальная задача Меня не очень заботит порядок вывода, поэтому важно только, чтобы кратность была правильной, но общий упорядоченный случай, кажется, стоит решить.)

1 Ответ

3 голосов
/ 04 марта 2011

Есть модуль sets , который приближается к тому, что вы описываете. Что-то вроде:

library(sets)
gset_difference(as.gset(x), as.gset(y)) 
# gives
{1 [1], 2 [1], 3 [2], 4 [2]}
...