2011-05-19 81 views
4

我的數據的樣子,行排序的字母順序

A B C D 
B C A D 
X Y M Z 
O M L P 

我怎麼能對行進行排序,以獲得類似

A B C D 
A B C D 
M X Y Z 
L M O P 

感謝,

回答

1

好吧,如果你使用Python和將您的數據列入清單列表中,如

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

你可能只是做一個簡單的列表理解像這樣:

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

但因爲你沒有指定語言或任何其他有用的信息,我不知道,如果這會有所幫助。

+6

它有一個'r'標籤。 – 2011-05-19 19:56:59

+4

但是OP接受了Python的答案......我們生活在混亂的時代。 – 2011-05-19 20:09:09

5

你試過了什麼?這個過程非常簡單,只需簡單的循環即可輕鬆解決。

> 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)) 

t()功能是必要的,因爲與apply系列函數行操作返回列主順序的結果。

+2

+1爲緊湊解決方案,並解釋了爲什麼t()是必要的 – 2011-05-19 20:14:49

+0

除了解釋不太對 - 它不是列主要的順序,它是新的維度被添加到開始,而不是保持在原來的位置。 – hadley 2011-05-19 23:20:17

+0

也許我不瞭解我們的差異。 'apply()'一次構建一列矩陣,對吧? – 2011-05-20 01:47:24

2

plyr答案沒有?

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

library("plyr") 

aaply(foo,1,sort) 

完全一樣DWins回答,只是你不需要t()

0

而且,如果你想在遞減順序進行排序,定義一個函數

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

的伎倆:

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