我正在使用adjacent_vertices()
包中的igraph
函数。它返回顶点序列的列表。
library(igraph)
g <- make_graph("Zachary")
mylist <- adjacent_vertices(g, c(1,2), mode="out")
# [[1]]
+ 16/34 vertices, from 5feb73a:
[1] 2 3 4 5 6 7 8 9 11 12 13 14 18 20 22 32
# [[2]]
+ 9/34 vertices, from 5feb73a:
[1] 1 3 4 8 14 18 20 22 31
我需要找到结果的简短介绍,像这样:
V Count
[1] 16
[2] 9
此处 V 是顶点名称, Count 是度外度。
我尝试使用:
degree(g)[1]
# 16
degree(g)[2]
# 9
问题。是否可以将列表列表转换为表,或者在igraph
包中是否存在内置函数?
编辑。原始图形中的顶点数超过100。
答案 0 :(得分:1)
这将对您有所帮助。首先,获取相邻顶点的列表顶点。
vlist=V(g)$name
vercount=adjacent_vertices(g, vlist, mode="out")
现在为顶点名称和顶点度创建两个向量。
vertexname=vector(`)
vertexcount=vector()
然后找到相邻顶点的数量。
for(i in 1:length(vlist))
{
vertexname[i]=vlist[i]
vertexcount[i]=length(vercount[[i]])
}
df=data.frame(vertexname,vertexcount)
df
这将为您提供顶点及其度的完整列表。
答案 1 :(得分:1)
这里的要点是您有一个未修饰的图形(您可以使用V(g)$name
返回NULL
来看到它)。在这种情况下,可以使用顶点id
代替name
。
要获取顶点id
,必须使用V(g)
。您可以使用igraph.vs
将此as.vector(V(g))
对象转换为向量。这将提供一个包含所有顶点id
的向量。
然后,您可以使用以下方法结合使用as.vector(V(g))
和degree()
函数来获取表(data.frame
):
data.frame(V = as.vector(V(g)),
Count = degree(g, v = V(g), mode = "out"))
# outupt
V Count
1 1 16
2 2 9
3 3 10
4 4 6
5 5 3
6 6 4
7 7 4
8 8 4
9 9 5
10 10 2
11 11 3
12 12 1
13 13 2
14 14 5
15 15 2
16 16 2
17 17 2
18 18 2
19 19 2
20 20 3
21 21 2
22 22 2
23 23 2
24 24 5
25 25 3
26 26 3
27 27 2
28 28 4
29 29 3
30 30 4
31 31 4
32 32 6
33 33 12
34 34 17