R:向量中元素的自然排序,但特定值总是最后

R: natural sort of elements in a vector, but certain value always last

只是尝试使用 gtools::mixedsort 对向量进行自然排序,但我希望某个值始终显示在最后...有没有一种干净的方法可以做到这一点?或者我应该在排序之前从向量中删除这些值,然后手动添加它们?谢谢!

在下面的 MWE 中我想要 "na" last:

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

这是一种技巧:

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')