我找不到按给定顺序对矩阵进行排序的方法。我有一个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
的行名称和列名称是sorted
和sorted2
我尝试了order()
,但我无法弄清楚如何指定按行方向排列的顺序。
答案 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