根据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