使用标签提取 Igraph 中的所有三角形
Extract All Triangles in Igraph with Labels
我创建了一个有 1000 条边的 igraph。我的目标是提取在该 igraph 中找到的所有三角形,但包括标签而不是数字。我还希望它采用具有 3 列的数据框形式(三角形的每个节点一列)
我试过简单地调用:
triangles(graph)
这会返回一个列表,所有名称都在一列中:
+ 28431/204 vertices, named:
[1] node_a
[2] node_b
[3] node_c
[4] node_a
[5] node_b
[6] node_d
[7] node_a
[8] node_b
[9] node_e
[10] node_a
+ ... omitted several vertices
当我尝试时:
adjacent.triangles(graph)
它returns所有数字但不是节点的名称:
[1] 15 103 45 121 152 78 325 325 3 35 90 0 488 283 3 0 325 325 325 325 78 21 190 3
[25] 133 0 47 167 167 6 3 325 505 415 0 36 78 325 78 78 90 6 206 6 36 0 78 49
我需要通过 igraph 找到一个函数,它可以给我以下格式的三角形:
COL1 COL2 COL3
node_a node_b node_c
node_a node_b node_d
node_a node_b node_e
node_f node_g node_h
任何帮助都会很棒,谢谢!
您可以使用 clique 函数(假设 g 是您的图表),
cl.tri=cliques(g,min=3,max=3)
通过
找到大小为三(三角形)的派系,然后 assemble 将它们放入数据框中
df<-lapply(cl.tri,function(x){V(g)$name[x]})
df2=data.frame(matrix(unlist(df),ncol=3,byrow=T))
我创建了一个有 1000 条边的 igraph。我的目标是提取在该 igraph 中找到的所有三角形,但包括标签而不是数字。我还希望它采用具有 3 列的数据框形式(三角形的每个节点一列)
我试过简单地调用:
triangles(graph)
这会返回一个列表,所有名称都在一列中:
+ 28431/204 vertices, named:
[1] node_a
[2] node_b
[3] node_c
[4] node_a
[5] node_b
[6] node_d
[7] node_a
[8] node_b
[9] node_e
[10] node_a
+ ... omitted several vertices
当我尝试时:
adjacent.triangles(graph)
它returns所有数字但不是节点的名称:
[1] 15 103 45 121 152 78 325 325 3 35 90 0 488 283 3 0 325 325 325 325 78 21 190 3
[25] 133 0 47 167 167 6 3 325 505 415 0 36 78 325 78 78 90 6 206 6 36 0 78 49
我需要通过 igraph 找到一个函数,它可以给我以下格式的三角形:
COL1 COL2 COL3
node_a node_b node_c
node_a node_b node_d
node_a node_b node_e
node_f node_g node_h
任何帮助都会很棒,谢谢!
您可以使用 clique 函数(假设 g 是您的图表),
cl.tri=cliques(g,min=3,max=3)
通过
找到大小为三(三角形)的派系,然后 assemble 将它们放入数据框中df<-lapply(cl.tri,function(x){V(g)$name[x]})
df2=data.frame(matrix(unlist(df),ncol=3,byrow=T))