【问题标题】:How can I count the second degree of all vertices in a network graph in R?如何计算 R 中网络图中所有顶点的第二度?
【发布时间】:2014-04-01 12:37:08
【问题描述】:

网络中的一级连接数(随机图)很容易用函数计算:

g <- erdos.renyi.game(10, 1/10, directed = TRUE)
d1 <- degree(g, mode="out")

但是,我可以用哪个函数计算每个节点的二度连接?

【问题讨论】:

    标签: r network-programming social-networking


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 2021-01-02
    • 2019-09-24
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    相关资源
    最近更新 更多