Je veux trier une colonne d'une matrice en fonction du rang des sommes de lignes des autres colonnes. Donc j'utilise ce code:R - la fonction de tri change la matrice
for(j in 1:d) {
X[,j]=sort(X[,j],decreasing=TRUE)[rank(rowSums(X[,c(1:d)[-j]]))]
}
Mais ce code change les valeurs de la colonne, que je veux juste réorganiser. Lorsque les sommes de ligne sont égales, la valeur de la jième colonne devient égale, bien qu'il n'y ait qu'une seule valeur dans la colonne d'origine. Un exemple:
Comment puis-je éviter ce problème?
Merci
Vous avez probablement besoin d'une virgule à la fin de votre déclaration 'rank' - comme vous êtes juste s'indexation dans une dimension, ce qui signifie que R est le tri comme un vecteur. –
Cela ne fonctionne pas dans mon exemple. Mais il devrait être trié comme un vecteur ou non? – Applekes
Vous savez que vous réorganisez les colonnes indépendamment à chaque étape et que vous utilisez ensuite la matrice modifiée pour calculer de nouveaux rangs? Je pense que vous pourriez rechercher 'for (j dans 1: d) {X [, j] = X [ordre (rowSums (X [, c (1: d) [- j]]), diminuant = TRUE), j]} 'mais je ne suis pas sûr de ce que vous essayez d'accomplir. Ce serait plus facile avec un exemple reproductible et la sortie attendue –