5

私が解決しようとしていることを説明するタイトルを思い付くのに苦労しているので、より良いタイトルがあればコメントしてください!

ソリューションは、R、Python、または SQL である可能性があります(正確には Aster TeraData SQL ですが、SQL 言語のソリューションは学習目的に非常に役立ちます)。

問題: 順不同のアイテムのペアのリストが与えられた場合、少なくとも 1 つのリンクに関連するすべてのペアをリンクする出力を生成します。

R を使用した簡単な例を次に示します。

colone = c("a","b","u","e","f","f","j","z")
coltwo = c("b","c","c","a","g","h","h","y")
d <- data.frame(colone, coltwo)
d
  colone coltwo
1      a      b
2      b      c
3      u      c
4      e      a
5      f      g
6      f      h
7      j      h
8      z      y

望ましい出力 (読みやすいデータ構造):

(a,b,c,e,u)
(f,g,h,j)
(y,z)

基本的に、入力はノードとエッジのグラフを表しています。目的の出力は、接続されているグラフ内のすべてのオブジェクトのリストです。

どんな助けや考えもいただければ幸いです!

4

1 に答える 1

3

R では、次のパッケージを使用できますigraph

library(igraph)
gg <- graph.edgelist(as.matrix(d), directed=F)
split(V(gg)$name, clusters(gg)$membership)
#$`1`
#[1] "a" "b" "c" "u" "e"
#
#$`2`
#[1] "f" "g" "h" "j"
#
#$`3`
#[1] "z" "y"

そして、次を使用してグラフを見ることができます。

plot(gg)

これは、MrFlick による優れた回答に基づいています。

于 2015-06-15T14:57:17.850 に答える