vacio - ¿Cómo devolver 5 valores más altos del vector en R?
seleccionar filas en r (4)
Sí, head( X, 5)
donde X
es tu vector ordenado.
Tengo un vector y puedo devolver el valor más alto y más bajo, pero ¿cómo puedo devolver los 5 valores más altos? ¿Hay una solución simple de una línea para esto?
> a <- c(1:100)
> tail(sort(a),5)
[1] 96 97 98 99 100
tail(sort.int(x, partial=length(x) - 4), 5)
Usar sort.int con parcial tiene la ventaja de ser (potencialmente) más rápido (potencialmente) no haciendo una clasificación 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
x[order(x)[1:5]]