【发布时间】:2017-09-04 09:47:14
【问题描述】:
我想根据其他列的行和的排名对矩阵的列进行排序。所以我使用这个代码:
for(j in 1:d) {
X[,j]=sort(X[,j],decreasing=TRUE)[rank(rowSums(X[,c(1:d)[-j]]))]
}
但是这段代码改变了列的值,我只是想重新排列。 当行和相等时,第 j 列的值也变得相等,尽管在原始列中每个值只有一次。一个例子:
如何避免这个问题?
谢谢
【问题讨论】:
-
您可能需要在
rank语句的末尾添加一个逗号 - 就目前而言,您只是在一维中进行索引,这意味着 R 将其作为向量进行排序。 -
这在我的示例中不起作用。但它是否应该作为向量排序?
-
您知道您在每一步都独立地重新排序列,然后使用修改后的矩阵来计算新的排名?我想您可能正在寻找
for(j in 1:d) { X[,j]=X[order(rowSums(X[,c(1:d)[-j]]),decreasing=TRUE),j] },但我不确定您要实现什么目标。使用可重现的示例和预期的输出会更容易