使用igraph计算

时间:2018-11-08 13:29:32

标签: r networking igraph

我目前正在研究R中的网络。我遇到了我认为不合适的事情。首先介绍一下背景: 我使用以下代码用igraph包创建了一个网络,其中包含7231个对4个变量的观察结果:

MyNetwork <- data.frame(Katalog_G_2000_2018_VOLLEDIG$Zuwendungsempfänger, Katalog_G_2000_2018_VOLLEDIG$Ausführende.Stelle, Katalog_G_2000_2018_VOLLEDIG$typ, Katalog_G_2000_2018_VOLLEDIG$verbund)
Network <- graph.data.frame(MyNetwork, directed=F)

此后,我使用以下代码可视化了网络:

plot(Network,vertex.size=6, edge.arrow.size=0.4, main= "ICT-Networks in Germany 2000-2018", vertex.label.cex = 0.8,vertex.label=NA,vertex.color = "green")

现在,我想找出我的网络中有多少个没有边的顶点(即,孤立的份额)。为此,我尝试使用以下代码:

V(Network)[igraph::degree(Network, mode = "out")>0 & igraph::degree(Network, mode = "in") > 0]
length(V(Network)[igraph::degree(Network, mode = 'out')>0 & igraph::degree(Network, mode = 'in') > 0])

这是出现问题的地方。运行此代码,告诉我4305/4305顶点具有边,而我的网络的可视化清楚地表明存在没有边的顶点。

任何人都可以告诉我如何解决此代码,以找出隔离网络中共享隔离区的份额吗?对于这个问题的任何其他解决方案(例如使用不同的代码)我们也将不胜感激。如果您需要任何其他信息来回答我的问题,请让我知道(很遗憾,目前我无法共享我的数据集)。 预先感谢。

1 个答案:

答案 0 :(得分:0)

如果所有主图都已连接,则可以用这种方法计算没有边的顶点。

    library(igraph)    
    length(decompose.graph(Network, 
                           mode = c("weak", "strong"), 
                           max.comps = NA,
                           min.vertices = 0)
           ) - 1