我有一个矩阵:
[,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列中的值是不同的,则应将其视为唯一且保留。
答案 0 :(得分:2)
这取决于你想要什么。如果要从矩阵中删除重复的行但是留下每个非唯一行的一个示例,则以下将执行操作(假设您的矩阵名为mat
):
which(!duplicated(mat))
相反,如果您只想要在原始矩阵中已经唯一的行,则需要以下内容(帽子提示为@Marek):
which(!duplicated(mat) & !duplicated(mat, fromLast=TRUE))