获取矩阵中唯一行的索引

时间:2014-03-27 09:33:57

标签: r matrix

我有一个矩阵:

       [,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列中的值是不同的,则应将其视为唯一且保留。

1 个答案:

答案 0 :(得分:2)

这取决于你想要什么。如果要从矩阵中删除重复的行但是留下每个非唯一行的一个示例,则以下将执行操作(假设您的矩阵名为mat):

which(!duplicated(mat))

相反,如果您只想要在原始矩阵中已经唯一的行,则需要以下内容(帽子提示为@Marek):

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