按 R 中的自定义函数排序

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)))
Run Code Online (Sandbox Code Playgroud)

它给了我 [1, 5, 99, 100, -5, -7, -100]

它按正/负数和绝对值排序。

我怎样才能在 R 中做同样的事情?不分为正数和负数吗?

a = c(1,100,5,-5,-7,99,-100)

use*_*330 6

使用该order()功能:

a = c(1,100,5,-5,-7,99,-100)
a[order(a < 0, abs(a))]
#> [1]    1    5   99  100   -5   -7 -100
Run Code Online (Sandbox Code Playgroud)

由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
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v2.0.1)于 2022-03-22 创建