【问题标题】:Add attribute to an edgelist based on degree根据度数将属性添加到边缘列表
【发布时间】:2018-03-18 23:16:58
【问题描述】:

igraph (g) 有以下边:

from    to
1   3
1   5
2   1
2   3
3   1
4   5
4   1

我用过:

g<- make_empty_graph(n=5) %>%
    add_edges(c(1,3, 1,5, 2,1, 2,3, 3,1, 4,5, 4,1)) %>%
    set_edge_attr("color", value = "red")
    E(g)[[]]
plot(g)

我计算了入度

g_in <- degree(g, mode='in")
g_in
[1] 3 0 2 0 2

我想创建一个结合 g 和 g_in 的数据框,如下所示:

from to in_degree
1   3   2
1   5   2
2   1   3
2   3   2
3   1   3
4   5   2
4   1   3

即只结合“到节点”的in_degree。 我该怎么做?

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    这是一种方法:

    data$in_degree <- setNames(degree(g, mode = "in"), V(g))[data$to]
    #   from to in_degree
    # 1    1  3         2
    # 2    1  5         2
    # 3    2  1         3
    # 4    2  3         2
    # 5    3  1         3
    # 6    4  5         2
    # 7    4  1         3
    

    我首先创建从顶点到入度的映射,

    setNames(degree(g, mode = "in"), V(g))
    # 1 2 3 4 5 
    # 3 0 2 0 2
    

    然后将其应用到data$to

    【讨论】:

    • 我收到以下错误:data$in_degree
    • @Erwin,现在试试。如果还是不行,V(g) 的值是什么?整数?
    • 它没有用。 str() 显示: str(V(g)) Class 'igraph.vs' atomic [1:5] 1 2 3 4 5 ..- attr(, "env")= ..- attr(, "图")= chr "b9768984-2abc-11e8-8000-010000000000"
    • @Erwin,你有一个名为datadata.frame 有两列fromto
    • 我可以使用:g
    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 2014-04-13
    • 2016-10-25
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2022-06-29
    相关资源
    最近更新 更多