Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在关联矩阵中查找相同模式的行索引_R_Matrix - Fatal编程技术网

R 在关联矩阵中查找相同模式的行索引

R 在关联矩阵中查找相同模式的行索引,r,matrix,R,Matrix,我有一个关联矩阵(0-1矩阵),其中的行是重复的 我需要找出哪些行具有相同的模式 例如 如果我的矩阵如下 [,1] [,2] [,3] [1,] 1 0 1 [2,] 1 0 1 [3,] 1 1 1 [4,] 1 1 1 [5,] 1 1 0 那么输出应该是 第1行、第2行和第3行、第4行和第5行分别显示相同的模式 我可以通过检查数据帧来实现这一点。条件但我相信有一个优雅的解决方案 编辑 预期结果

我有一个关联矩阵(0-1矩阵),其中的行是重复的

我需要找出哪些行具有相同的模式

例如

如果我的矩阵如下

   [,1] [,2] [,3]
[1,]    1    0    1
[2,]    1    0    1
[3,]    1    1    1
[4,]    1    1    1
[5,]    1    1    0
那么输出应该是

第1行、第2行和第3行、第4行和第5行分别显示相同的模式

我可以通过检查数据帧来实现这一点。条件但我相信有一个优雅的解决方案

编辑

预期结果:

假设输出为列表“a”,则上述结果(例如)应如下所示:

> a
[[1]]
 [1] 1 2
[[2]]
[1] 3 4
[[3]]
 [1] 5 
你可以试试

 indx <- do.call(paste, as.data.frame(m))
 setNames(split(seq_along(indx),factor(indx, unique(indx))), NULL)
 #[[1]]
 #[1] 1 2

 #[[2]]
 #[1] 3 4

 #[[3]]
 #[1] 5

indx预期结果是什么。?根据输入数据集,行1、2形成一个组,3、4形成另一个组,5形成第三个组。您需要拆分数据集吗?@akrun,我已经用所需的输出编辑了我的问题。请尝试
split(1:nrow(m),apply(m,1,paste,collapse=”“)
如果您的矩阵是二进制的,您还可以从QA那里获取想法<代码>拆分(序号(m)),c(m%*%(2^(0:(ncol(m)-1щщ))
 m <- structure(c(1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
 1L, 0L), .Dim = c(5L, 3L))