Domanda

Voglio ottenere l'indice di una particolare lettera, per esempio

>  match(LETTERS,"G")
 [1] NA NA NA NA NA NA  1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Mi dà che la lettera esiste, ma lo voglio tornare 6 in questo caso per l'elemento 6 ° della lista.

È stato utile?

Soluzione

O which:

which(LETTERS=="G")

La funzione which è progettato specificamente per questo scopo:

  

Dare gli indici di 'veri' di una logica   oggetto, consentendo indici degli array.

La funzione which può restituire l'indice di valori logici TRUE in una matrice impostando l'argomento arr.ind TRUE (questo è molto utile).

> which(matrix(LETTERS, nrow=5)=="G")
[1] 7
> which(matrix(LETTERS, nrow=5)=="G", arr.ind=TRUE)
     row col
[1,]   2   2

Si consiglia inoltre di leggere questo recente post di Seth Falcon dove si parla di ottimizzazione in C.

Altri suggerimenti

Proprio per l'avviso: Penso che si voleva

match("G", LETTERS)
# [1] 7

I vantaggi di questa soluzione oltre grep o which è che si potrebbe utilizzare su vettore di lettere:

match(c("S","T","A","C","K","O","V","E","R","F","L","O","W"), LETTERS)
# gives:
# [1] 19 20  1  3 11 15 22  5 18  6 12 15 23

Prova grep:

R> grep("G", LETTERS)
[1] 7
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top