基于成对相等性对列进行分组

时间:2015-11-23 05:08:54

标签: r combinations

我有一个名为equalityMatrix

的矩阵
MPI_Win_unlock()

(让你的:)

> equalityMatrix
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18]
[1,]   29   29   29   29   55   55   55   55  101   101   101   111   111   115   134   134   134   151
[2,]  101  111  115  316  134  151  235  319  111   115   316   115   316   316   151   235   319   235
     [,19] [,20]
[1,]   151   235
[2,]   319   319

这表示元素29等于元素101,111,115和316;元素55等于元素134,151,235和319;等等。

如何有效获取如下所示的相等元素列表?

structure(c(29L, 101L, 29L, 111L, 29L, 115L, 29L, 316L, 55L, 
134L, 55L, 151L, 55L, 235L, 55L, 319L, 101L, 111L, 101L, 115L, 
101L, 316L, 111L, 115L, 111L, 316L, 115L, 316L, 134L, 151L, 134L, 
235L, 134L, 319L, 151L, 235L, 151L, 319L, 235L, 319L), .Dim = c(2L, 
20L))

我最终会使用此命令的输出来创建映射。这些值本质上是属于同一组的元素的索引。

2 个答案:

答案 0 :(得分:5)

考虑到这一点的一种方法是图形,其中每个数字是图形中的节点,并且在列中共同出现的两个数字意味着与这两个数字相关联的顶点共享图形中的边缘。对于您的示例,我们可以使用igraph包来创建包含您的数据的图表:

html

enter image description here

图表的组成部分将是相同的数字:

library(igraph)
g <- graph.data.frame(t(equalityMatrix))
plot(g)

答案 1 :(得分:1)

这样的事情:

function span1(left1, width, id, color11) {

    if (id == 1) {
        var sum = 0;
        if (sum < width)
            sum = width;

        width5 = left1 + sum;
        console.log(width);
    } else if (id == 2) {
        var sum2 = 0;
        left1 = width5;
        if (sum2 < width)
            sum2 = width;

        width1 = left1 + sum2;
    } else if (id == 3) {
        var sum1 = 0;
        if (sum1 < width)
            sum1 = width;
        left1 = width1;
        width2 = sum1 + left1;

    } else if (id == 4) {
        left1 = width2;
        width3 = left1 + width;
    } else {
        left1 = width3;
    }