¿Cómo ordenar un vector de caracteres primero por letra y luego por número?
Frecuentes
Visto 751 veces
-1
Tengo un vector de caracteres que contiene cadenas que comienzan con letras y con números:
sample.condition
[1] "1_t" "2_t" "3_t" "4_t" "5_t" "6_t" "7_t" "GFP_t" "1_t"
[10] "2_t" "3_t" "4_t" "5_t" "6_t" "7_t" "GFP_t"
El vector ordenado final debe tener los elementos que contienen "GFP" en las primeras posiciones:
sample.condition
[1] "GFP_t" "GFP_t" "1_t" "2_t" "3_t" "4_t" "5_t" "6_t" "7_t" "1_t"
[10] "2_t" "3_t" "4_t" "5_t" "6_t" "7_t"
Intenté varios argumentos de clasificación pero no llegué a ninguna parte.
1 Respuestas
3
Encuentra las cuerdas que no comienzan con un número. Crear un índice lógico:
idx <- grepl("^[^0-9]", sample.condition)
Utilice este índice para crear subconjuntos y ordenar los subconjuntos. Luego, combine ambos subconjuntos ordenados:
c(sort(sample.condition[idx]), sort(sample.condition[!idx]))
# [1] "GFP_t" "GFP_t" "1_t" "1_t" "2_t" "2_t" "3_t" "3_t"
# [9] "4_t" "4_t" "5_t" "5_t" "6_t" "6_t" "7_t" "7_t"
Respondido el 03 de diciembre de 13 a las 13:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas r sorting vector or haz tu propia pregunta.