Matlabには、1つのベクトルの値を検索する方法がありますが、他のベクトルの値は検索しません。
例えば:
x <- c(1,2,3,4)
y <- c(2,3,4)
x
にないy
の値が1であることを教えてくれる関数はありますか?
setdiff()(差の設定)関数を使用できます。
> setdiff(x, y)
[1] 1
はい。ベクトルの場合は、単に_%in%
_演算子またはis.element()
関数を使用できます。
_> x[!(x %in% y)]
1
_
マトリックスには、多くの異なるアプローチがあります。 merge()
はおそらく最も単純です。 そのシナリオのこの質問を見る をお勧めします。
setdiff、union、intersect、setequal、およびis.element のRのヘルプファイルは、Rの標準セット関数に関する情報を提供します。
setdiff(x, y)
は、x
にないy
の要素を返します。
上記のように、それは非対称の違いです。たとえば、次のとおりです。
> x <- c(1,2,3,4)
> y <- c(2,3,4,5)
>
> setdiff(x, y)
[1] 1
> setdiff(y, x)
[1] 5
> union(setdiff(x, y), setdiff(y, x))
[1] 1 5
x[is.na(match(x,y))]
setdiff()
は、出力が入力の順序に依存するため、扱いにくい関数です。代わりに、intersect
とは正反対の単純な関数を作成できます。これははるかに優れています。
>difference <- function(x, y) {
c(setdiff(x, y), setdiff(y, x))
}
#Now lets test it.
>x <- c(1,2,3,4)
>y <- c(2,3,4,5)
>difference(x,y)
[1] 1 5