R 提取3+中的唯一行;列矩阵
使用R,我试图提取矩阵中的唯一行,其中“唯一行”受给定行中所有值的约束 例如,如果我有此数据集: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) 或 只要只保留一个唯一行,顺序就无关紧要。我在网上搜索过,
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
库(套)
xx[!重复(应用(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