我想根据其他列的行总和的等级对矩阵的列进行排序。所以我使用这段代码:
for(j in 1:d) {
X[,j]=sort(X[,j],decreasing=TRUE)[rank(rowSums(X[,c(1:d)[-j]]))]
}
但是这段代码会更改列的值,我只想重新排列。 当行和相等时,第j列的值也变得相等,尽管原始列中只有一个值。一个例子:
如何避免此问题?
由于
答案 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]
}