2011-05-19 2 views

Répondre

1

Eh bien, si vous utilisez Python et vos données dans une liste de listes, comme

my_data = [ [ A, B, C, D ], 
      [ B, C, A, D ], 
      [ X, Y, M, Z ], 
      [ O, M, L, P ] ] 

vous pouvez simplement faire une simple mutation de liste comme ceci:

sorted_lists = [sorted(l) for l in my_data] 

Mais puisque vous ne l'avez pas spécifié une langue ou toute autre information utile, je ne sais pas si cela va aider.

+6

Il avait une étiquette 'r'. –

+4

Mais l'OP a accepté la réponse Python ... fois que nous vivons. –

5

Qu'avez-vous essayé? C'est vraiment simple et facile à résoudre avec une simple boucle.

> s <- x 
> for(i in 1:NROW(x)) { 
+ s[i,] <- sort(s[i,]) 
+ } 
> s 
    V1 V2 V3 V4 
1 A B C D 
2 A B C D 
3 M X Y Z 
4 L M O P 
16
t(apply(DF, 1, sort)) 

La fonction t() est nécessaire parce que les opérations de ligne avec la famille apply des fonctions renvoie les résultats dans l'ordre des colonnes-major.

+2

+1 pour une solution compacte, plus expliquer pourquoi t() est nécessaire –

+0

Sauf l'explication n'est pas tout à fait raison - ce n'est pas une colonne ordre majeur, c'est que De nouvelles dimensions sont ajoutées au début, pas conservées dans leurs positions d'origine. – hadley

+0

Peut-être que je ne comprends pas notre différence. 'apply()' est en train de construire une matrice une colonne à la fois, n'est-ce pas? –

2

Non plyr réponse encore ?!

foo <- matrix(sample(LETTERS,10^2,T),10,10) 

library("plyr") 

aaply(foo,1,sort) 

Exactement la même chose que DWins répondre sauf que vous n'avez pas besoin t()

0

Et, si vous souhaitez trier par ordre décroissant, la définition d'une fonction

mysort <- function(x){ 
     sort(x, decreasing = TRUE) 
    } 

le tour est joué:

t(apply(vot, 1, FUN = function(x) mysort(x)))