2016-10-06 75 views
1

我想统计单向网络中具有更多接收连接数的节点数。计算网络中连接数最多的节点R igraph

例如像这样的网络中:

g <- graph(c('A',1,'A',2,'A',3,'B',4,'B',5,'B',6,'C',7,'C',8,'D',7,'D',8)) 

我们将具有3个独立的部件

在一个文件中(测试),我可以上传并表示它装载数据如下:

plot(g) 

plot graph

我怎样才能获得destina有更多连接的节点?在这种情况下将是节点7和8

继另一个问题(r igraph most connected nodes)我试过如下:

lengths(as_adj_list(g)) 

A 1 2 3 B 4 5 6 C 7 8 D 
3 1 1 1 3 1 1 1 2 2 2 2 

结果计算所有节点的长度,但我看仅限目标节点。

我也试过:

sort(g, decreasing = TRUE) 

Error in intI(i, n = [email protected][1], dn[[1]], give.dn = FALSE) : index larger than maximal 12 

正如你看到的我得到一个错误信息

继解说:用下面我得到的目的地节点的数量,但如何让那些最大数量?

degree(g4, mode = "in") 

任何想法?

感谢

+1

你可以改善你的问题。请阅读[如何在R中提供最小重现性示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610)。然后相应地编辑并改进它。好的帖子通常提供最少的输入数据,所需的输出数据和代码尝试 - 在新的/干净的R会话中进行全部复制 - 粘贴 - 运行。对于你的问题:'igraph :: degree(g,mode =“in”)'可能会有所帮助。 – lukeA

+0

谢谢卢克。我编辑了代码来简化。也感谢您的代码建议。我不知道如何获得最具联系的人:-( – Selrac

回答

4

你可以做

library(igraph) 
g <- graph(c('A',1,'A',2,'A',3,'B',4,'B',5,'B',6,'C',7,'C',8,'D',7,'D',8)) 
V(g)$indeg <- degree(g, mode = "in") 
V(g)[V(g)$indeg == max(V(g)$indeg)] 
# 2/12 vertices, named: 
# [1] 7 8 
+0

谢谢卢克,那太棒了!!谢谢。 – Selrac