Cómo devolver 5 de nivel superior de los valores del vector en R?

Tengo un vector y soy capaz de volver más alto y el valor más bajo, sino cómo devolver 5 de nivel superior de los valores? Hay una simple solución para esto?

InformationsquelleAutor pixel | 2010-09-11

4 Kommentare

  1. 54
    > a <- c(1:100)
    > tail(sort(a),5)
    [1]  96  97  98  99 100
    • O head(sort(a, decreasing=TRUE), 5)
    • la cola es ligeramente más rápido que la cabeza y la disminución de = TRUE > x <- rnorm(50000000) > sistema.el tiempo en la cola(sort(x), 5)) sistema de usuario transcurrido 22.64 0.25 22.95 > sistema.tiempo(cabeza(sort(x, disminuyendo = TRUE), 5)) sistema de usuario transcurrido 23.26 0.20 23.51
    • Debe ejecutar este más de una vez y tomar el tiempo promedio. Porque yo creo que no hay diferencia (estadísticamente hablando), basado en mis simulaciones.
    • Puedo obtener, en promedio, un 2% más rápido para el usuario.auto y transcurrir. La ganancia en sys.el auto es del 8%. Pero la relevancia de la ganancia depende de la aplicación.
    • El uso de sort(x, method=’rápido’) es significativamente más rápido, pero David de la solución a continuación, utilizando el parcial argumento es aún más rápido.
  2. 3
    tail(sort.int(x, partial=length(x) - 4), 5)

    El uso de ordenación.int con parcial tiene la ventaja de ser (potencialmente) más rápido (potencialmente) no haciendo un total de ordenación. Pero en realidad, mi aplicación aparece un poco más lento. Tal vez esto es porque con el parámetro parcial != NULL, shell sort es utilizado en lugar de la ordenación rápida?

    > x <- 1:1e6
    > system.time(replicate(100, tail(sort.int(x, partial=length(x) - 4), 5)))
       user  system elapsed 
      4.782   0.846   5.668
    > system.time(replicate(100, tail(sort(x), 5)))
       user  system elapsed 
      3.643   0.879   4.854 
    • Si en lugar de usar x<-runif(1e6) quieres ver el beneficio. Tenga en cuenta que los 5 valores que volver sería, de hecho, la mayor de 5, pero no necesariamente en un orden.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea