R 在关联矩阵中查找相同模式的行索引
我有一个关联矩阵(0-1矩阵),其中的行是重复的 我需要找出哪些行具有相同的模式 例如 如果我的矩阵如下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行分别显示相同的模式 我可以通过检查数据帧来实现这一点。条件但我相信有一个优雅的解决方案 编辑 预期结果
[,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))