4

setdiff()Rでは、入力ベクトルの順序と多重度を維持しながら、マルチセット(つまり「バッグ」)の違いを行う簡単な方法はありますか?

たとえば、 とx <- c(1,2,2,3,1,5,4,4,5,3)としy <- c(2,1,5,5)ます。bagdiff()のような関数を探しています。bagdiff(x,y)つまり、 inc(2,3,1,4,4,3)の要素の最初の出現が削除され、多重度があります。yx

(私の実際のタスクでは、出力の順序はあまり気にしないので、多重度が正しいことだけが重要ですが、一般的な順序付けられたケースは解決する価値があるようです。)

4

1 に答える 1

3

あなたが説明したものに近いセットモジュールがあります。何かのようなもの:

library(sets)
gset_difference(as.gset(x), as.gset(y)) 
# gives
{1 [1], 2 [1], 3 [2], 4 [2]}
于 2011-03-04T19:51:34.387 に答える