如何计算 R 中网络图中所有顶点的第二度?
Posted
技术标签:
【中文标题】如何计算 R 中网络图中所有顶点的第二度?【英文标题】:How can I count the second degree of all vertices in a network graph in R? 【发布时间】:2014-04-01 12:37:08 【问题描述】:网络中的一级连接数(随机图)很容易用函数计算:
g <- erdos.renyi.game(10, 1/10, directed = TRUE)
d1 <- degree(g, mode="out")
但是,我可以用哪个函数计算每个节点的二度连接?
【问题讨论】:
【参考方案1】:我建议使用neigborhood
来替代degree
函数。这允许您指定邻域的任何顺序。
d1 <- sapply(neighborhood(g, 1, mode="out"), length)-1
d2 <- sapply(neighborhood(g, 2, mode="out"), length)-1
如果您有带循环的图表,您应该检查这是否仍能提供所需的结果。
编辑:感谢@Ryan 指出neighborhood.size
实际上是比neighborhood
更好的答案。
d1 <- neighborhood.size(g, 1, mode="out")-1
d2 <- neighborhood.size(g, 2, mode="out")-1
编辑:感谢@Ryan 提供了neighbor.size 功能!我使用它并且它有效,但是为了选择二级连接的数量,你需要从 d2 中减去 d1,那么你只有二级连接:
d1 <- degree(g, mode="out")
d2 <- neighborhood.size(g, 2, mode="out")-d1-1
【讨论】:
您甚至可以通过使用 igraph 中的 neighbor.size 方法来避免调用 sapply。以上是关于如何计算 R 中网络图中所有顶点的第二度?的主要内容,如果未能解决你的问题,请参考以下文章