Trova l'indice di un elemento in un vettore R

Manav Narula 14 aprile 2021
  1. Usa la funzione which() per trovare l’indice di un elemento in R
  2. Usa la funzione match() per trovare l’indice di un elemento in R
Trova l'indice di un elemento in un vettore R

Un vettore è una delle strutture dati fondamentali in R. Viene utilizzato per memorizzare elementi in una sequenza, ma a differenza degli liste, tutti gli elementi in un vettore devono essere dello stesso tipo di dati.

Ogni elemento nel vettore ha una posizione o un indice particolare. È possibile conoscere l’indice di qualsiasi elemento utilizzando funzioni incorporate in R come which() e match().

In questo tutorial, troveremo l’indice dell’elemento 7 e 8 del seguente vettore:

x <- c(5,6,8,9,7,5,7,8)

Usa la funzione which() per trovare l’indice di un elemento in R

La funzione which() restituisce un vettore con l’indice (o gli indici) dell’elemento che corrisponde al vettore logico (in questo caso ==).

Per esempio:

x <- c(5,6,8,9,7,5,7,8)
which(x == 7)
[1] 5 7

Si noti che poiché 7 è presente due volte nel vettore, vengono restituite entrambe le sue posizioni. Se vogliamo il primo indice di 7, possiamo semplicemente farlo come mostrato di seguito:

which(x == 7)[1]
[1] 5

Possiamo anche usare la funzione which() per trovare gli indici di più elementi usando il parametro %in%, che restituisce un vettore con un valore True per ogni elemento che corrisponde.

which(x %in% c(7,8))
[1] 3 5 7 8

Come puoi vedere, vengono restituite tutte le posizioni di 7 e 8.

Usa la funzione match() per trovare l’indice di un elemento in R

La funzione match() è molto simile alla funzione which(). Restituisce un vettore con il primo indice (se l’elemento è in più di una posizione come nel nostro caso) dell’elemento ed è considerato più veloce della funzione which().

x <- c(5,6,8,9,7,5,7,8)
match(7,x)
[1] 5

Possiamo anche usarlo per trovare il primo indice di più elementi, come mostrato di seguito:

x <- c(5,6,8,9,7,5,7,8)
match(c(7,8),x)
[1] 5 3

Nota che solo le prime posizioni di 7 e 8 vengono restituite dalla funzione match(). Questo è il motivo per cui match() è considerato più veloce dei due metodi per situazioni in cui è richiesto solo il primo indice.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - R Vector