R / SQL /Python : 从 node-edge 对中提取连通分量
R / SQL /Python : Extracting connected components from node-edge pairs
我很难想出一个描述我要解决的问题的标题,所以如果您有更好的标题,请发表评论!
解决方案可以在 R、Python 或 SQL 中(确切地说是 Aster TeraData SQL,尽管任何解决方案SQL语言对学习很有帮助)
问题:给定一个没有特定顺序的项目对列表,生成一个输出,其中 link 将与至少一个 link.[=15= 相关的所有对组合在一起]
这是一个使用 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
期望的输出(在任何easily-readable数据结构中):
(a,b,c,e,u)
(f,g,h,j)
(y,z)
本质上,输入表示节点和边的图形。所需的输出是图中连接的所有 objects 的列表。
如有任何帮助或想法,我们将不胜感激!
在 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 的出色回答 here
我很难想出一个描述我要解决的问题的标题,所以如果您有更好的标题,请发表评论!
解决方案可以在 R、Python 或 SQL 中(确切地说是 Aster TeraData SQL,尽管任何解决方案SQL语言对学习很有帮助)
问题:给定一个没有特定顺序的项目对列表,生成一个输出,其中 link 将与至少一个 link.[=15= 相关的所有对组合在一起]
这是一个使用 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
期望的输出(在任何easily-readable数据结构中):
(a,b,c,e,u)
(f,g,h,j)
(y,z)
本质上,输入表示节点和边的图形。所需的输出是图中连接的所有 objects 的列表。
如有任何帮助或想法,我们将不胜感激!
在 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 的出色回答 here