2014-02-26 51 views
1

我想讓我的矩陣對稱相對於行名稱和列名, 例如,我有一個矩陣製備基體對稱對於行和列名中的R

> ma 
    a b c d 
    a 1 5 9 13 
    c 9 10 11 15 
    b 5 6 10 14 
    d 13 14 15 16 

我想使它象

> ma 
    a b c d 
    a 1 5 9 13 
    b 5 6 10 14 
    c 9 10 11 15 
    d 13 14 15 16 

這意味着該矩陣是對稱的row.names和列名的條件是相等的,所以作爲基體是對稱的,以及(其實是我工作的鄰接矩陣, 因此它對於鄰接矩陣來說非常重要ymmetric。

+1

你的意思是說'ma [order(rownames(ma)),order(colnames(ma))]''? – A5C1D2H2I1M1N2O1R2T1

+0

圖像我們有一個圖的鄰接矩陣,行和列表示圖中的節點,假設我們用rownames將矩陣排序爲與列相同的順序,我們自然得到了對稱矩陣。 – ToBeGeek

回答

2

更新

ma[colnames(ma), ] 
# a b c d 
# a 1 5 9 13 
# b 5 6 10 14 
# c 9 10 11 15 
# d 13 14 15 16 

這將工作假設你的矩陣是方形的,你的rownames是一樣的colnames。如果你想讓他們都按照Ananda的答案排序(儘管對於這種特殊情況你會得到相同的結果)。


OLD

難道這就是你的意思是:

ma[] <- apply(ma, 2, sort) 
# a b c d 
# a 1 5 9 13 
# c 5 6 10 14 
# b 9 10 11 15 
# d 13 14 15 16 

注意,這個矩陣是對稱的,但是這僅僅是因爲在它的數據允許的可能性。可能有其他數據可能與其他重新排序產生對稱矩陣,但這不是我的專業知識。在這裏,我們在每列中升序。

+0

對不起,我的朋友,我說的是關於列名和行名稱的對稱關係,所以姓名應該是a,b,c,d,我的行名也應該是a,b,c,d。不僅對矩陣中的值進行排序 – ToBeGeek

+0

@ToBeGeek,請參閱更新回答 – BrodieG

+0

@ToBeGeek,這是否回答您以前的問題? – BrodieG