按给定向量对行和列进行排序

时间:2015-04-21 09:45:36

标签: r sorting matrix

我找不到按给定顺序对矩阵进行排序的方法。我有一个n x m矩阵,其名称分配给行和列。我还有两个包含我的排序的向量。我想根据我的两个向量重新排序行和列。

这是我的代码:

tab<-read.csv("matrix.csv",sep="\t",header=T,row.names=1,check.names=FALSE)
mat<-as.matrix(tab)

sorted包含我想要的列顺序, sorted2包含我想要的行顺序。

mat的行名称和列名称是sortedsorted2

的子集

我尝试了order(),但我无法弄清楚如何指定按行方向排列的顺序。

1 个答案:

答案 0 :(得分:1)

## Generate data

set.seed(1)

dat <- matrix(round(rnorm(4, 5), 2), 2)

## Define order

Vec1 <- c(1, 2)

Vec2 <- c(2, 1)

# Sort columns

dat[order(Vec1),]

     [,1] [,2]
[1,] 4.37 4.16
[2,] 5.18 6.60

dat[order(Vec2),]

     [,1] [,2]
[1,] 5.18 6.60
[2,] 4.37 4.16

# Sort rows

dat[,order(Vec1)]

     [,1] [,2]
[1,] 4.37 4.16
[2,] 5.18 6.60

dat[,order(Vec2)]

     [,1] [,2]
[1,] 4.16 4.37
[2,] 6.60 5.18