1. ホーム
  2. r

[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?

2022-03-14 19:28:01

質問

Rで、ある要素 x とベクトル v . の要素の最初のインデックスを見つけたいのです。 v と等しい x . というのも一つの方法として知っています。 which(x == v)[[1]] しかし、それはあまりに非効率的な気がします。もっと直接的な方法はないのでしょうか?

ボーナスポイントとして、以下の場合に動作する関数はありますか? x はベクトルですか?の各要素の位置を示すインデックスのベクトルを返す必要があります。 x での v .

解決方法は?

機能 match はベクトルに対して動作します。

x <- sample(1:10)
x
# [1]  4  5  9  3  8  1  6 10  7  2
match(c(4,8),x)
# [1] 1 5

match は、あなたが要求したように、マッチの最初の出会いを返すだけです。これは、第1引数の値の第2引数における位置を返します。

マルチマッチングの場合 %in% を指定します。

x <- sample(1:4,10,replace=TRUE)
x
# [1] 3 4 3 3 2 3 1 1 2 2
which(x %in% c(2,4))
# [1]  2  5  9 10

%in% は、最初の引数と同じ長さの論理ベクトルを返します。 TRUE は、その値が第2引数で見つかる場合、そして FALSE そうでない場合は