Упорядочение значений символов при сохранении порядка номеров

У меня есть символьный вектор, подобный следующему:

char <- c("C.1", "C.3", "C.10", "A.5", "D.4", "A.50", "A.49")

Я хочу отсортировать их в алфавитном порядке, но если я делаю

char[order(char)]

я получил

[1] "A.49" "A.5"  "A.50" "C.1"  "C.10" "C.3"  "D.4" 

Тем не менее, желаемый результат A.5, A.49, A.50, C.1, C.3, C.10, D.4 как я хотел бы сохранить порядок самих фактических чисел.

Как я могу изменить порядок char как это?

1 ответ

Я уверен, что есть много способов сделать это. Вот один пример использования stringr, Я извлекаю письмо и передаю его в качестве первого аргумента orderзатем я извлекаю цифру и использую ее в качестве второго аргумента order,

library(stringr)
char[order(str_extract(char,"\\w"), strtoi(str_extract(char,"\\d+")))]
# [1] "A.5"  "A.49" "A.50" "C.1"  "C.3"  "C.10" "D.4" 
Другие вопросы по тегам