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')
只是尝试使用 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')