Changer l'ordre des rangées dans une matrice/dataframe
J'ai besoin d'inverser les lignes dans mon bloc de données, ne pas transposer les données, mais le déplacement de la ligne du bas vers le haut et ainsi de suite. Si les données d'image ont été:
1 2 3
4 5 6
7 8 9
J'ai besoin de les convertir à
7 8 9
4 5 6
1 2 3
J'ai lu sur sort()
mais je ne pense pas que c'est ce dont j'ai besoin ou je ne suis pas en mesure de trouver le chemin.
Vous devez vous connecter pour publier un commentaire.
Il y a sans doute plus élégante des manières, mais cela fonctionne:
Cela fonctionne parce que vous êtes l'indexation de la matrice avec une inversion de l'ordre des entiers comme l'index de ligne.
nrow(m):1
résultats dans3 2 1
.Vous pouvez inverser l'ordre des données.cadre à l'aide de la
dplyr
package:Ou sans l'aide de la pipe-opérateur en faisant
iris[order(row.names(iris), decreasing = T),]
row.number
s sont en faitcharacter
s. Vous aurez besoin de convertirinteger
d'abord eniris[order(as.integer(row.names(iris)), decreasing = TRUE),]
iris %>% arrange(desc(row_number()))
Je voudrais inverser les lignes d'un index de départ avec le nombre de lignes, le long de cette ligne
On peut inverser l'ordre de la ligne.noms (pour les données.cadre seulement):
Je pense que c'est la façon la plus simple:
Si vous voulez inverser les colonnes, il suffit de faire
Lieu trèèès en retard, mais cela semble être au travail rapide, ne nécessite pas de paquets supplémentaires et il est simple:
Je suppose que pour une utilisation fréquente, on pourrait faire une fonction hors de lui.
Testé avec R v=3.3.1.
dplyr::arrange
ou une certaine forme deseq
sont généralement recommandés, car R est optimisée pour les opérations par opposition à des boucles. Le a accepté de répondre aussi, ne repose pas sur les paquets supplémentaires.