Question

Je veux obtenir l'index d'une lettre particulière, par exemple

>  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

me donne que la lettre existe, mais je veux revenir 6 dans ce cas pour le 6e élément de la liste.

Était-ce utile?

La solution

Ou which:

which(LETTERS=="G")

La fonction which est conçu spécialement à cet effet:

  

Donner les indices « vrais » d'une logique   objet, ce qui permet pour les indices de tableau.

La fonction which peut également renvoyer l'indice pour les valeurs de TRUE logiques dans une matrice en définissant l'argument arr.ind à TRUE (ce qui est très utile).

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

Vous pouvez également lire ce récent blog de Seth Falcon où il parle de l'optimisation en C.

Autres conseils

Juste pour l'avis: Je pense que vous vouliez

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

Les avantages de cette solution sur grep ou which est que vous pouvez l'utiliser sur le vecteur de lettres:

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

Essayez grep:

R> grep("G", LETTERS)
[1] 7
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top