【发布时间】:2015-02-20 15:46:06
【问题描述】:
我有一个关联矩阵(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
【问题讨论】:
-
预期的结果是什么。?根据输入数据集,第 1、2 行构成一组,3,4 行构成另一个组,5 行构成第三组。需要拆分数据集吗?
-
@akrun,我已经用所需的输出编辑了我的问题。
-
试试
split(1:nrow(m), apply(m, 1, paste, collapse="")) -
如果您的矩阵是二进制的,您也可以从this QA 那里获取想法;
split(seq_len(nrow(m)), c(m %*% (2 ^ (0:(ncol(m) - 1)))))