R - sort函数改变矩阵

时间:2017-09-04 09:47:15

标签: r sorting ranking

我想根据其他列的行总和的等级对矩阵的列进行排序。所以我使用这段代码:

for(j in 1:d) {
    X[,j]=sort(X[,j],decreasing=TRUE)[rank(rowSums(X[,c(1:d)[-j]]))]
}

但是这段代码会更改列的值,我只想重新排列。 当行和相等时,第j列的值也变得相等,尽管原始列中只有一个值。一个例子:

example

如何避免此问题?

由于

1 个答案:

答案 0 :(得分:0)

希望这有帮助!

#sample data
x <- matrix(c(1,1,1,2,2,2,3,3,3), nrow=3, ncol=3, byrow=T)

#if you want to sort by row-sum of 2nd & 3rd column
x[order(rowSums(x[,-1]), decreasing = T),]
#if you want to sort by row-sum of 1st & 2nd column
x[order(rowSums(x[,-3]), decreasing = T),]

所以最后的循环可能是

x <- matrix(c(1,1,1,2,2,2,3,3,3), nrow=3, ncol=3,byrow=T)
X <- x
for(j in 1:ncol(x)) {
  X[,j]=x[order(rowSums(x[,-j]), decreasing = T),j]
}