Ordenación de vectores con sort()
Ordene vectores numéricos y de caracteres de forma ascendente o descendente.
Ordenación de vectores con sort() es una lección gratuita de R Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.
¿Qué hace sort()?
La función sort() ordena por defecto los elementos de un vector de forma ascendente. Funciona con vectores numéricos, de caracteres y lógicos, y devuelve un vector nuevo ordenado sin modificar el original.
scores <- c(42, 7, 95, 13, 67, 31)
sorted_scores <- sort(scores)
print(sorted_scores)Orden descendente
Pase decreasing = TRUE a sort() para invertir el orden. Esto resulta útil para clasificar resultados de mayor a menor, como las puntuaciones de una tabla de posiciones o las cifras de ventas.
prices <- c(19.99, 5.49, 89.00, 34.50, 12.75)
sort(prices, decreasing = TRUE)Ordenar vectores de caracteres
Los vectores de caracteres se ordenan lexicográficamente (alfabéticamente). R utiliza la configuración regional del sistema para establecer el orden, por lo que las mayúsculas pueden ordenarse antes que las minúsculas según dicha configuración.
fruits <- c('banana', 'Apple', 'cherry', 'apricot', 'Blueberry')
sort(fruits)Comportamiento del ordenamiento sensible a mayúsculas y minúsculas
En la mayoría de las configuraciones regionales, las letras mayúsculas se ordenan antes que las minúsculas. Para ordenar sin distinguir entre mayúsculas y minúsculas, convierta primero todo a un mismo formato con tolower() o toupper().
words <- c('Zebra', 'apple', 'Mango', 'banana')
# Case-sensitive (uppercase first)
sort(words)
# Case-insensitive approach
words[order(tolower(words))]Gestionar valores NA con na.last
De forma predeterminada, sort() elimina los valores NA. Use na.last = TRUE para colocarlos al final o na.last = FALSE para colocarlos al principio. Esto controla dónde aparecen los valores ausentes en el resultado.
data <- c(5, NA, 2, NA, 8, 1)
# Default: NAs removed
sort(data)
# NAs at end
sort(data, na.last = TRUE)
# NAs at beginning
sort(data, na.last = FALSE)Ordenar vectores lógicos
En orden ascendente, los vectores lógicos se ordenan colocando FALSE (0) antes que TRUE (1). Esto puede resultar útil cuando desea agrupar los valores TRUE/FALSE.
flags <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
sort(flags)
sort(flags, decreasing = TRUE)sort() conserva el tipo del vector
sort() siempre devuelve un vector del mismo tipo que la entrada. Ordenar enteros devuelve enteros, ordenar doubles devuelve doubles y ordenar caracteres devuelve caracteres. También se conserva el atributo de clase.
int_vec <- c(5L, 2L, 8L, 1L, 4L)
result <- sort(int_vec)
print(result)
print(class(result))
print(typeof(result))sort.int() para ordenar enteros
sort.int() es una función de nivel más bajo diseñada específicamente para ordenar vectores integer o double. Acepta los mismos argumentos que sort(), pero es ligeramente más rápida con vectores numéricos grandes porque evita parte de la sobrecarga del despacho de métodos.
big_vec <- c(100L, 3L, 77L, 22L, 55L, 9L)
# sort.int works like sort for numeric/integer vectors
result <- sort.int(big_vec, decreasing = FALSE)
print(result)El vector original no cambia
Una propiedad importante de sort() es que no modifica el vector original. Devuelve un vector nuevo y ordenado. Debe asignar el resultado si desea conservar el ordenamiento.
temps <- c(22.5, 18.0, 30.1, 15.3, 27.8)
sorted_temps <- sort(temps)
cat('Original:', temps, '\n')
cat('Sorted: ', sorted_temps, '\n')Ordenamiento e indexación juntos
A veces necesita tanto los valores ordenados como sus posiciones originales. Combine sort() con which() o use order() (que se verá en la siguiente lección) para obtener los índices originales junto con los valores ordenados.
exam_scores <- c(78, 92, 65, 88, 71)
sorted <- sort(exam_scores)
cat('Sorted scores:', sorted, '\n')
# Find what rank each original score gets
ranks <- rank(exam_scores)
cat('Rank of each student:', ranks, '\n')Patrones prácticos con sort()
Un patrón habitual consiste en ordenar los valores únicos de un vector o en obtener los valores más grandes usando sort() junto con head() o tail().
sales <- c(120, 340, 95, 210, 340, 180, 95, 420)
# Unique values in order
sort(unique(sales))
# Top 3 largest
tail(sort(sales), 3)
# Bottom 3 smallest
head(sort(sales), 3)Comprobación rápida
¿Qué argumento controla si los valores NA aparecen al principio, al final o se eliminan al usar sort()?
Conclusiones clave sobre sort()
Conclusiones clave sobre sort():
- Use
sort(x)para ordenar de forma ascendente ysort(x, decreasing=TRUE)para ordenar de forma descendente - Los vectores de caracteres se ordenan alfabéticamente; de forma predeterminada, se distingue entre mayúsculas y minúsculas
- Controle la ubicación de los NA con
na.last = TRUE/FALSE/NA sort()no modifica el vector original: siempre devuelve uno nuevo- Use
tail(sort(x), n)ohead(sort(x), n)para obtener los valores superiores o inferiores sort.int()es una variante más rápida para vectores numéricos o enteros
x <- c(3, 1, NA, 5, 2, NA, 4)
cat('Ascending (no NAs):', sort(x), '\n')
cat('Descending (NAs last):', sort(x, decreasing = TRUE, na.last = TRUE), '\n')Preguntas frecuentes
¿La lección «Ordenación de vectores con sort()» es gratis?
Sí — el texto completo de «Ordenación de vectores con sort()» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Ordenación de vectores con sort()»?
Ordene vectores numéricos y de caracteres de forma ascendente o descendente. Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar R Academy?
No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Ordenación de vectores con sort()»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de R Academy?
Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ordenación de vectores con sort()
- order() para una ordenación flexible
- Asignación de rangos con rank()
- Ordenación de data frames por columna