【问题标题】:How to turn a weighted edgelist into an adjacency matrix in r如何将加权边缘列表转换为r中的邻接矩阵
【发布时间】:2020-08-19 15:28:17
【问题描述】:

我有一个加权边缘列表,我想将其转换为邻接矩阵。 有没有简单的代码可以用来做这个?

数据如下:

  From To    Weight
1    a  a 0.3274570
2    b  a 0.7188648
3    a  b 0.1097450
4    b  b 0.9054419

这里是复制代码:

edgelist <- setNames(cbind(expand.grid(letters[1:2], letters[1:2]), runif(4)), c("From", "To", "Weight"))
edgelist

【问题讨论】:

    标签: r igraph adjacency-matrix network-analysis edge-list


    【解决方案1】:

    一种方法是使用igraph 包中的get.adjacency

    library(igraph)
    mygraph <- graph.data.frame(edgelist)
    get.adjacency(mygraph, sparse = FALSE, attr='Weight')
    #          a         b
    #a 0.3274570 0.1097450
    #b 0.7188648 0.9054419
    

    虽然可以简单地将数据转换为矩阵,但准备好使用此软件包的其余功能可能会有所帮助。

    【讨论】:

    • 非常感谢您的帮助!
    • 我似乎使用这种方法得到了 3 个“额外的象限”零?在生成的矩阵上,两个轴都包含“From”和“To”的所有条目。就我而言,每个条目都是独一无二的。可能需要另一个步骤来正确地对其进行子集化...
    【解决方案2】:
    as.matrix(tidyr::spread(edgelist, "To", "Weight")[-1])
    

    【讨论】:

    • 生成的矩阵没有行名。只有 1-n(行数)。
    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多