R には、要素x
とベクトルがあります。に等しいv
内の要素の最初のインデックスを見つけたいです。これを行う 1 つの方法は であることは知っていますが、これは非常に非効率に思えます。もっと直接的な方法はありますか?v
x
which(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
そうでない場合は を返します。