2014-03-27 37 views
0

我有一個矩陣:獲得的唯一行indicies在矩陣

 [,1] [,2] [,3] 
    [1,] 23 20 0.00835 
    [2,] 17 28 0.02077 
    [3,] 4 12 0.00600 
    [4,] 11 13 0.00501 
    [5,] 3 10 0.00653 
    [6,] 19 22 0.00371 
    [7,] 1 5 0.00492 
    [8,] 27 2 0.00009 
    [9,] 14 16 0.06497 
[10,] 23 20 0.00835 
[11,] 17 28 0.02077 
[12,] 4 12 0.00600 
[13,] 3 10 0.00653 
[14,] 19 22 0.00371 
[15,] 1 5 0.00492 
[16,] 27 2 0.00009 
[17,] 14 16 0.06497 
[18,] 11 13 0.00501 
[19,] 23 20 0.00835 
[20,] 17 28 0.02077 
[21,] 4 12 0.00600 
[22,] 11 13 0.00501 
[23,] 3 10 0.00653 
[24,] 19 22 0.00371 
[25,] 1 5 0.00492 
[26,] 27 2 0.00009 
[27,] 14 16 0.06497 
[28,] 23 20 0.00835 
[29,] 9 18 0.00509 
[30,] 17 28 0.02077 
[31,] 4 12 0.00600 
[32,] 11 13 0.00501 
[33,] 3 10 0.00653 
[34,] 19 22 0.00371 
[35,] 1 5 0.00492 
[36,] 27 2 0.00009 
[37,] 14 16 0.06497 
[38,] 23 20 0.00835 
[39,] 9 18 0.00509 
[40,] 17 28 0.02077 
[41,] 4 12 0.00600 
[42,] 11 13 0.00501 
[43,] 3 10 0.00653 
[44,] 19 22 0.00371 
[45,] 1 5 0.00492 
[46,] 27 2 0.00009 
[47,] 14 16 0.06497 
[48,] 23 20 0.00835 
[49,] 9 18 0.00509 
[50,] 17 28 0.02077 
[51,] 4 12 0.00600 
[52,] 11 13 0.00501 
[53,] 3 10 0.00653 
[54,] 1 5 0.00492 

,我想獲得它獨特的行的索引。整行是唯一的(如1,2,3列中的值)非常重要。如果第1列和第2列中的值對於兩行是相同的,但第3列中的值是不同的,則應將其視爲唯一併保留。

+2

[查找重複行索引]的可能重複(http://stackoverflow.com/ questions/12495345/find-indices-of-duplicated-rows) – zx8754

回答

2

這取決於你想要什麼。如果你想從基質中去除重複行,但在離開每個非唯一行的一個典範,下面就可以了(假設你基質被命名爲mat):

which(!duplicated(mat)) 

相反,如果您只想要原始矩陣中已經是唯一的行,您需要以下內容(帽子提示到@Marek):

which(!duplicated(mat) & !duplicated(mat, fromLast=TRUE)) 
+0

這也給你重複元素的索引。就像在鏈接問題中一樣,你需要:'哪個(!重複(mat)&!重複(mat,fromLast = TRUE))'。 – Marek

+0

確實如此,但它取決於你想要的東西:你將返回恰好出現一次的元素索引(原始矩陣中唯一的元素)。 Mine會返回一次出現的元素的索引,並且每個元素出現多次(如果使用矩陣上的索引,結果矩陣行將是唯一的)。很好的澄清。 – RoyalTS

+0

問題狀態「我想獲得唯一行的索引」,所以你的答案不太合適。 – Marek