R图

时间:2018-10-10 21:00:27

标签: r igraph

众所周知,两个顶点的雅卡德相似性系数是公共邻居数除以与所讨论的两个顶点中至少一个顶点相邻的顶点数。在Igraph R中,有一个函数sameity.jaccard(),它为图形中的任意顶点计算上述系数。我只想计算相邻顶点的雅卡德系数(即边缘的所谓雅卡德系数),并且想要以长度等于所考虑图边数的向量的形式获得结果。我为我不熟悉的Igraph C库找到了解决此问题的方法。我想在Igraph R中获得这样的结果。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以通过创建一个函数来计算单个边缘末端的jaccard相似度并将其应用于所有边缘来实现。由于您不提供任何数据,因此将使用任意图形进行说明。

任意示例图

library(igraph)
set.seed(1234)
g = erdos.renyi.game(10,0.3)
plot(g)

Example graph

现在对所有边缘应用jaccard相似度函数

sapply(E(g),  
    function(x) similarity.jaccard(g, as.vector(ends(g,x)))[1,2])
 [1] 0.0000000 0.0000000 0.0000000 0.4000000 0.1666667 0.2000000 0.2000000
 [8] 0.2500000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000

您可以测试一些数据点。例如,第7个边缘在顶点2和8之间,并且jaccard相似度为0.2

E(g)[7]
+ 1/13 edge:
[1] 2--8
similarity.jaccard(g, c(2,8))
     [,1] [,2]
[1,]  1.0  0.2
[2,]  0.2  1.0