繁体   English   中英

R-排序功能更改矩阵

[英]R - sort function changes the matrix

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

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

但是这段代码改变了我只想重新排列的列的值。 当行总和相等时,第j列的值也将相等,尽管事实上在原始列中每个值只有一次。 一个例子:

如何避免这个问题?

谢谢

希望这可以帮助!

#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]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM