回答編集履歴
3
説明の改善
    
        answer	
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            [igraph パッケージ](https://cran.r-project.org/web/packages/igraph/index.html) を用い,データの各行を頂点とする無向グラフを使ってグループ分けする記述例を下記に示します。
         | 
| 2 2 |  | 
| 3 | 
            -
            * 隣接行列(`w`)を用意し, | 
| 3 | 
            +
            * 隣接行列(`w`)を用意し,両頂点が「3変数のどれかを共有しているか否か」で「`1`と`0` 」を(無向グラフに必要な左下三角部分に)格納する
         | 
| 4 4 |  | 
| 5 5 | 
             
            * 隣接行列(`w`)から無向グラフ(`g`)を作成する
         | 
| 6 6 |  | 
2
書式の改善
    
        answer	
    CHANGED
    
    | @@ -27,7 +27,7 @@ | |
| 27 27 | 
             
            }
         | 
| 28 28 |  | 
| 29 29 | 
             
            g <- graph_from_adjacency_matrix(w, mode="lower")
         | 
| 30 | 
            -
            data$group_id  | 
| 30 | 
            +
            data$group_id <- components(g)$membership
         | 
| 31 31 |  | 
| 32 32 | 
             
            print(data)
         | 
| 33 33 | 
             
            ##    V1 V2 V3 group_id
         | 
1
より簡単な方法に回答を修正
    
        answer	
    CHANGED
    
    | @@ -1,14 +1,12 @@ | |
| 1 1 | 
             
            [igraph パッケージ](https://cran.r-project.org/web/packages/igraph/index.html) を用い,データの各行を頂点とする無向グラフを使ってグループ分けする記述例を下記に示します。
         | 
| 2 2 |  | 
| 3 | 
            -
            *  | 
| 3 | 
            +
            * 隣接行列(`w`)を用意し,辺の両頂点が「3変数のどれかを共有しているか否か」で「`1`と`0` 」を(無向グラフに必要な左下三角部分に)格納する
         | 
| 4 4 |  | 
| 5 | 
            -
            * 隣接行列(`w`)から | 
| 5 | 
            +
            * 隣接行列(`w`)から無向グラフ(`g`)を作成する
         | 
| 6 6 |  | 
| 7 | 
            -
            *  | 
| 7 | 
            +
            * 関数 `components(g)` が出力する `membership` ベクトルを `group_id` として `data` に追加する
         | 
| 8 8 |  | 
| 9 | 
            -
            * 行列(`u`)の各行の「値がゼロの列番号」を `group_id` として `data` に追加する
         | 
| 10 9 |  | 
| 11 | 
            -
             | 
| 12 10 | 
             
            ```R
         | 
| 13 11 | 
             
            library(igraph)
         | 
| 14 12 |  | 
| @@ -24,23 +22,13 @@ | |
| 24 22 | 
             
                    w[i, j] <- ifelse(any(data$V1[i] == data$V1[j],
         | 
| 25 23 | 
             
                                          data$V2[i] == data$V2[j],
         | 
| 26 24 | 
             
                                          data$V3[i] == data$V3[j]),
         | 
| 27 | 
            -
                                       | 
| 25 | 
            +
                                      1, 0)
         | 
| 28 26 | 
             
                }
         | 
| 29 27 | 
             
            }
         | 
| 30 28 |  | 
| 31 | 
            -
            g <- graph_from_adjacency_matrix(w, mode="lower" | 
| 29 | 
            +
            g <- graph_from_adjacency_matrix(w, mode="lower")
         | 
| 32 | 
            -
            d <- distances(g)
         | 
| 33 | 
            -
             | 
| 30 | 
            +
            data$group_id = components(g)$membership
         | 
| 34 31 |  | 
| 35 | 
            -
            for (i in 1:N) {
         | 
| 36 | 
            -
                for (j in 1:ncol(u)) {
         | 
| 37 | 
            -
                    if (u[i, j] < 1) {
         | 
| 38 | 
            -
                        data$group_id[i] <- j
         | 
| 39 | 
            -
                        break
         | 
| 40 | 
            -
                    }
         | 
| 41 | 
            -
                }
         | 
| 42 | 
            -
            }
         | 
| 43 | 
            -
             | 
| 44 32 | 
             
            print(data)
         | 
| 45 33 | 
             
            ##    V1 V2 V3 group_id
         | 
| 46 34 | 
             
            ## 1   1  1  1        1
         |