ベクトル内の要素のインデックスを見つけるための R 関数はありますか? 質問する

ベクトル内の要素のインデックスを見つけるための R 関数はありますか? 質問する

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

ボーナスポイントとして、 がベクトルの場合に機能する関数はありますかx? つまり、x内の各要素の位置を示すインデックスのベクトルを返す必要がありますv

ベストアンサー1

この関数は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要求どおり、一致の最初の遭遇のみを返します。最初の引数の値の 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そうでない場合は を返します。

おすすめ記事