R 提取3+中的唯一行;列矩阵

R 提取3+中的唯一行;列矩阵,r,unique,rows,R,Unique,Rows,使用R,我试图提取矩阵中的唯一行,其中“唯一行”受给定行中所有值的约束 例如,如果我有此数据集: x = matrix(c(1,1,1,2,2,5,1,2,2,1,2,1,5,3,5,2,1,1),6,3) 因为(1,1,5)=(5,1,1)和(2,1,2)=(2,2,1),所以第1行和第6行以及第4行和第5行是重复的 最终,我试图以以下形式结束: y = matrix(c(1,1,1,2,1,2,2,1,5,3,5,2),4,3) 或 只要只保留一个唯一行,顺序就无关紧要。我在网上搜索过,

使用R,我试图提取矩阵中的唯一行,其中“唯一行”受给定行中所有值的约束

例如,如果我有此数据集:

x = matrix(c(1,1,1,2,2,5,1,2,2,1,2,1,5,3,5,2,1,1),6,3)
因为(1,1,5)=(5,1,1)和(2,1,2)=(2,2,1),所以第1行和第6行以及第4行和第5行是重复的

最终,我试图以以下形式结束:

y = matrix(c(1,1,1,2,1,2,2,1,5,3,5,2),4,3)

只要只保留一个唯一行,顺序就无关紧要。我在网上搜索过,但unique()和duplicated()等函数只适用于精确匹配的行


提前感谢您提供的帮助。

另一个答案:使用集合。略加修改的矩阵:

library(sets)
x <- matrix(c(1,1,1,2,2,5,5, 1,2,2,1,2,1,5, 5,3,5,2,1,1,1),7,3)
x
     [,1] [,2] [,3]
[1,]    1    1    5
[2,]    1    2    3
[3,]    1    2    5
[4,]    2    1    2
[5,]    2    2    1
[6,]    5    1    1
[7,]    5    5    1
库(套)

另一个答案是:使用集合。略加修改的矩阵:

library(sets)
x <- matrix(c(1,1,1,2,2,5,5, 1,2,2,1,2,1,5, 5,3,5,2,1,1,1),7,3)
x
     [,1] [,2] [,3]
[1,]    1    1    5
[2,]    1    2    3
[3,]    1    2    5
[4,]    2    1    2
[5,]    2    2    1
[6,]    5    1    1
[7,]    5    5    1
库(套)
x
x[!重复(应用(x,1,排序),边距=2),]
x[!重复(应用(x,1,排序),边距=2),]
a <- sapply(1:nrow(x), function(i) as.set(x[i,]))
x[!duplicated(a),]
     [,1] [,2] [,3]
[1,]    1    1    5
[2,]    1    2    3
[3,]    1    2    5
[4,]    2    1    2
b <- sapply(1:nrow(x), function(i) as.gset(x[i,]))
x[!duplicated(b),]
     [,1] [,2] [,3]
[1,]    1    1    5
[2,]    1    2    3
[3,]    1    2    5
[4,]    2    1    2
[5,]    5    5    1