@Arunの答えに追加するには、比較される2つのベクトルのサイズが異なる場合、短い方をリサイクルして同じサイズの2つのベクトルを比較し、ペアワイズR
比較を行います。(つまり、各ベクトルの最初の要素を比較し、次に各ベクトルの 2 番目の要素を比較します)。R
たとえば、ベクトル 1 の最初の要素をベクトル 2 のすべての要素と比較するわけではありません。(そのためには、@Arunが言及したように必要です)%in%
例えば、以下を見てください。最初の 2 つの例では、同等の出力が得られます
> c(0, 1, 2, 0, 1, 2) == c(1, 2)
[1] FALSE FALSE FALSE FALSE TRUE TRUE
> c(0, 1, 2, 0, 1, 2) == c(1, 2, 1, 2, 1, 2)
[1] FALSE FALSE FALSE FALSE TRUE TRUE
The comparisons being made are:
# element# LHS RHS areEqual
# 1. 0 1 FALSE <~~ Notice that the '0' from LHS is being compared with the '1' from RHS
# 2. 1 2 FALSE
# 3. 2 1 FALSE
# 4. 0 2 FALSE
# 5. 1 1 TRUE
# 6. 2 2 TRUE
これは別の例で、前の例に対して LHS が「シフト」されています。
> c(1, 2, 0, 1, 2, 0) == c(1, 2)
[1] TRUE TRUE FALSE FALSE FALSE FALSE
短いベクトルが長い要素の正確な倍数でない場合に何が起こるかに注意してください。(つまり、2 は 7 に入りません)。
再循環は引き続き発生しますが、短いベクトルの一部が最後の再循環から切り取られます。
R
サイズが異なるとは思わなかった場合に備えて、警告を表示します
> c(1, 2, 3, 4, 1, 2, 0) == c(1, 2)
[1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE
Warning message:
In c(1, 2, 3, 4, 1, 2, 0) == c(1, 2) :
longer object length is not a multiple of shorter object length
長い方のベクトルが RHS にあるか LHS にあるかは問題ではないことに注意してください。リサイクルはまったく同じように機能します
> c(1, 2) == c(1, 2, 0, 1, 2, 0)
[1] TRUE TRUE FALSE FALSE FALSE FALSE