Din*_*ang 3 python sorting r function
在Python中,我可以做类似的事情
a = [1,100,5,-5,-7,99,-100]
a.sort(key= lambda x: (x<0,abs(x)))
它给了我
[1, 5, 99, 100, -5, -7, -100]
它按正/负数和绝对值排序。
我怎样才能在 R 中做同样的事情?不分为正数和负数吗?
a = c(1,100,5,-5,-7,99,-100)
使用该order()功能:
a = c(1,100,5,-5,-7,99,-100)
a[order(a < 0, abs(a))]
#> [1]    1    5   99  100   -5   -7 -100
由reprex 包(v2.0.1)于 2022-03-22 创建
在某些情况下有用的另一种可能性是xtfrm为类定义方法。例如,如果您知道这些值都小于 1000,则可以使用
class(a) <- "classa"
xtfrm.classa <- function(x) {
    (a < 0) + abs(a)/1000
}
sort(a)
#> [1]    1    5   99  100   -5   -7 -100
由reprex 包(v2.0.1)于 2022-03-22 创建