R: естественная сортировка элементов в векторе, но определенное значение всегда последний - PullRequest
0 голосов
/ 16 апреля 2020

Просто пытаюсь создать естественный вид вектора, используя gtools::mixedsort, но я хочу, чтобы определенное значение всегда отображалось последним ... есть ли чистый способ сделать это? Или я должен удалить эти значения из вектора перед сортировкой, а затем добавить их вручную? Спасибо!

В MWE ниже я хочу "na" последним:

> aa <- c("235dfh","na","addk20","vcxvz89dg","REni0","na","235dfh")
> gtools::mixedsort(unique(aa))
[1] "235dfh"    "addk20"    "na"        "REni0"     "vcxvz89dg"

1 Ответ

1 голос
/ 16 апреля 2020

Это своего рода хак:

aa[aa == 'na'] <- NA
bb <- sort(unique(aa), na.last = TRUE)
bb
#[1] "235dfh"    "addk20"    "REni0"     "vcxvz89dg" NA   

, а затем, если необходимо, вернуть значение обратно.

bb[is.na(bb)] <- 'na'
#[1] "235dfh"    "addk20"    "REni0"     "vcxvz89dg" "na" 

Или используя setdiff:

c(sort(setdiff(aa, 'na')), 'na')    
...