Странное поведение с пакетом gtools :: mixedsort в R - PullRequest
0 голосов
/ 23 февраля 2020

Мне нравится использовать функцию mixedsort / order из пакета gtools для сортировки alphanumeri c. Однако я столкнулся с очень странным поведением, при котором при определенных обстоятельствах он плохо работает с персонажем E. Посмотрите некоторые примеры. Кто-нибудь может мне помочь ? Что не так?

Правильная сортировка:

> mixedsort(c("P0A1","P0B1","P0C1","P0D1","P0G1","P0F1"))
[1] "P0A1" "P0B1" "P0C1" "P0D1" "P0F1" "P0G1"

Неправильная сортировка для символа E:

> mixedsort(c("P0A1","P0E1","P0C1","P0D1","P0G1","P0F1"))
[1] "P0E1" "P0A1" "P0C1" "P0D1" "P0F1" "P0G1"

Правильная сортировка для символа E:

> mixedsort(c("PA1","PE1","PC1","PD1","PG1","PF1"))
[1] "PA1" "PC1" "PD1" "PE1" "PF1" "PG1"

1 Ответ

2 голосов
/ 23 февраля 2020

В R 0E1 находится число с плавающей запятой 0:

0E1
## [1] 0

Кажется, вам нужно будет оказать ему некоторую помощь. Вставьте пробел после последнего не-ди git, отсортируйте и удалите его.

sub(" ", "", mixedsort(sub("^(.*\\D)", "\\1 ", x)))
## [1] "P0A1" "P0C1" "P0D1" "P0E1" "P0F1" "P0G1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...