根据R中的所有行对矩阵进行排序

时间:2017-02-04 18:58:45

标签: r

我有一个矩阵M,我想排序很多行,以便列中的行顺序是固定的,但列是重新排序的。

我知道我可以使用以下代码实现此目的:

M[,order(M[1,],M[2,],M[3,],M[4,])]

但是如何推广这段代码以使其适用于4行以上?

1 个答案:

答案 0 :(得分:3)

我们可以转换为data.frame并将do.callorder

一起使用
res <- M[,do.call(order, as.data.frame(t(M))[1:4])]
#OP's code
res2 <- M[,order(M[1,],M[2,],M[3,],M[4,])]
identical(res, res2)
#[1] TRUE

数据

set.seed(1)
M <- matrix(sample(1:25), 5, 5)