根据R中的第一列sortingmatrix

我有一个具有以下两列的matrix:

1 349 1 393 1 392 4 459 3 49 3 32 2 94 

我想按照第一列的顺序对这个matrix进行sorting,但是我想保留第二列的相应值。

输出结果如下所示:

 1 349 1 393 1 392 2 94 3 49 3 32 4 459 

阅读数据:

 foo <- read.table(text="1 349 1 393 1 392 4 459 3 49 3 32 2 94") 

并sorting:

 foo[order(foo$V1),] 

这依赖于order保持联系的事实。 见?order

key=V1创build一个data.table自动为你做这个。 使用Stephan的数据foo

 > require(data.table) > foo.dt <- data.table(foo, key="V1") > foo.dt V1 V2 1: 1 349 2: 1 393 3: 1 392 4: 2 94 5: 3 49 6: 3 32 7: 4 459 

请注意,如果您想要以相反的顺序创build值,您可以轻松完成此操作:

 > example = matrix(c(1,1,1,4,3,3,2,349,393,392,459,49,32,94), ncol = 2) > example[order(example[,1], decreasing = TRUE),] [,1] [,2] [1,] 4 459 [2,] 3 49 [3,] 3 32 [4,] 2 94 [5,] 1 349 [6,] 1 393 [7,] 1 392