Comment obtenir l'indice d'une lettre de la liste A-Z?
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.
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