Tengo un vector y puedo devolver el valor más alto y más bajo, pero ¿cómo devolver 5 valores más altos? ¿Hay una solución simple de una línea para esto?¿Cómo devolver 5 valores más altos del vector en R?
20
A
Respuesta
32
> a <- c(1:100)
> tail(sort(a),5)
[1] 96 97 98 99 100
2
Sí, head(X, 5)
donde X
es su vector ordenado.
12
x[order(x)[1:5]]
3
tail(sort.int(x, partial=length(x) - 4), 5)
Usando sort.int con parciales tiene la ventaja de ser (potencialmente) más rápido (potencialmente) no hacer una especie completa. Pero en realidad, mi implementación parece un poco más lenta. Tal vez esto se deba a que con el parámetro partial! = NULL, se utiliza el ordenamiento de shell 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
+0
Si utiliza x <-runif (1e6), verá el beneficio. Tenga en cuenta que esos 5 valores que obtiene de hecho serían los 5 más altos, pero no necesariamente en un orden ordenado. – Tommy
Cuestiones relacionadas
- 1. Oracle SQL - Cómo recuperar los 5 valores más altos de una columna
- 2. Encontrar los valores más altos de n en un mapa
- 3. Google Charts yaxis valores más altos mostrados más bajo
- 4. ¿Cómo obtengo los valores más altos de una tabla?
- 5. Detecta los dos picos más altos del histograma
- 6. Enumerar valores distintos en un vector en R
- 7. En R, ¿cómo configuro los primeros valores de un vector largo en los valores de uno más corto?
- 8. trazando los 5 mejores valores de una tabla en R
- 9. Repita elementos del vector en R
- 10. Obteniendo tabla() para devolver ceros en R
- 11. ¿Cómo devolver valores múltiples?
- 12. Retraso básico en el vector R/dataframe
- 13. reemplazar valores en un vector basado en otro vector
- 14. R: Obtención de valores de atributos como un vector
- 15. R - ¿cómo declaro un vector de Fecha?
- 16. cómo devolver valores en javascript
- 17. Obtenga los términos de frecuencia más altos del índice Lucene
- 18. ¿Por qué std :: vector :: operator [] 5 a 10 veces más rápido que std :: vector :: at()?
- 19. R: valores del campo de acceso
- 20. Extracción de un número dado de los valores más altos en una lista
- 21. Encontrar los 2 números más altos: informática
- 22. Dividir un vector en trozos en R
- 23. Esquema ¿Cómo devolver valores múltiples?
- 24. Cómo devolver correctamente un gran vector de
- 25. ¿Cómo eliminar múltiples valores de un vector?
- 26. Regrese cada columna en un marco de datos en un vector en R
- 27. R: matriz por multiplicación vector
- 28. Cómo contar valores TRUE en un vector lógico
- 29. Devolviendo los 6 nombres más altos en una lista de tuplas en Python
- 30. R: ¿Cómo crear un vector de funciones?
O 'cabeza (tipo (a, disminuyendo = TRUE), 5)' – Marek
cola es ligeramente más rápido que la cabeza y disminuyendo = TRUE > x <- rnorm (50000000) > system.time (cola (sort (x), 5)) sistema usuario transcurrido 22,64 0,25 22,95 > system.time (cabeza (sort (x, disminuyendo = TRUE), 5)) sistema usuario transcurrido 23,26 0,20 23,51 – Thierry
@Thierry Usted debe ejecutar esto más de una vez y tomar un tiempo promedio. Porque creo que no hay diferencia (estadísticamente hablando), basada en mis simulaciones. – Marek