Pregunta

Quiero conseguir el índice de una letra en particular, por ejemplo,

>  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 da que la carta existe, pero quiero que vuelva 6 en este caso para el sexto elemento de la lista.

¿Fue útil?

Solución

O which:

which(LETTERS=="G")

La función which está diseñado específicamente para este propósito:

  

Dar a los índices 'verdadero' de una lógica   objeto, lo que permite índices de matriz.

La función which también puede devolver el índice para los valores TRUE lógicas en una matriz estableciendo el argumento arr.ind a TRUE (esto es muy útil).

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

También es posible que desee leer este reciente post de Seth Falcon donde habla acerca de la optimización en C.

Otros consejos

Sólo por el aviso: Creo que quería

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

Los beneficios de esta solución sobre grep o which es que se puede utilizar en el vector de letras:

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

Trate grep:

R> grep("G", LETTERS)
[1] 7
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top