将顶点序列列表转换为R中的表

时间:2018-11-12 06:18:09

标签: r list igraph

我正在使用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。

2 个答案:

答案 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