Calcular el rango de cada índice en un vector

Me gustaría calcular el rango de cada índice dentro de un vector, por ejemplo:

x <- c(0.82324952352792, 0.11953364405781, 0.588659686036408, 0.41683742380701, 
       0.11452184105292, 0.438547774450853, 0.586471405345947, 0.943002870306373, 
       0.28184655145742, 0.722095313714817)

calcRank <- function(x){
  sorted <- x[order(x)]
  ranks <- sapply(x, function(x) which(sorted==x))
  return(ranks)
}

calcRank(x)

> calcRank(x)
 [1]  9  2  7  4  1  5  6 10  3  8

¿Hay una mejor manera de hacer esto?

preguntado el 12 de junio de 12 a las 19:06

2 Respuestas

Por qué no solo:

rank(x)     # ..... ?

# [1]  9  2  7  4  1  5  6 10  3  8

Respondido el 12 de junio de 12 a las 20:06

match es lo que quieres:

match(x, sort(x))

Respondido el 12 de junio de 12 a las 19:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.