【问题标题】:How do I convert this adjacency matrix into a graph object?如何将此邻接矩阵转换为图形对象?
【发布时间】:2021-05-08 18:50:29
【问题描述】:

我有一个表示 CSV 上的社交互动数据的矩阵,如下所示:

    `0`   `1`   `2`   `3`   `4`   `5`   `6`   `7`   `8`   `9`
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 0     0    29     1     0     1     9     3     0     1     4
 1     1     0     0     1     3     1     0     1     1     1
 2     1     1     0    13     4     0     1     1    15     0
 3     3     0     1     0     1     1     7     1     1     1
 4     1     0     1    98     0     1     1     1     1     2
 5     2     5     1     1     3     0     2     0     1     5
 6     1     1     0     0    12     1     0     2     1     1
 7     1     1     0     1     0     1     9     0     1     2
 8     1     1    17    13   145     1    39     1     0     1
 9    88    23     1     5     1     2     1     7     1     0

我是社交网络分析的新手,所以我不确定我的术语,但这对我来说似乎是一个加权邻接矩阵,因为我们可以说学生 1 上次与学生 0 进行了 29 次交互年。我将此对象作为数据框存储在我的 RStudio 中,但是当我运行以下代码时,我收到以下错误:

> fn <- graph_from_adjacency_matrix(output, weighted = T)
Error in mde(x) : 'list' object cannot be coerced to type 'double'

我尝试将其转换为矩阵,但这似乎也不起作用。任何有关这方面的帮助将不胜感激。

【问题讨论】:

    标签: r igraph adjacency-matrix


    【解决方案1】:

    您需要先将data.frame转换为matrix,然后再应用graph_from_adjacency_matrix,例如,

    g <- graph_from_adjacency_matrix(as.matrix(df),weighted = TRUE)
    

    plot(g) 给了

    数据

    > dput(df)
    structure(list(``0`` = c(0L, 1L, 1L, 3L, 1L, 2L, 1L, 1L, 1L, 
    88L), ``1`` = c(29L, 0L, 1L, 0L, 0L, 5L, 1L, 1L, 1L, 23L), ``2`` = c(1L,
    0L, 0L, 1L, 1L, 1L, 0L, 0L, 17L, 1L), ``3`` = c(0L, 1L, 13L,
    0L, 98L, 1L, 0L, 1L, 13L, 5L), ``4`` = c(1L, 3L, 4L, 1L, 0L,
    3L, 12L, 0L, 145L, 1L), ``5`` = c(9L, 1L, 0L, 1L, 1L, 0L, 1L,
    1L, 1L, 2L), ``6`` = c(3L, 0L, 1L, 7L, 1L, 2L, 0L, 9L, 39L, 1L
    ), ``7`` = c(0L, 1L, 1L, 1L, 1L, 0L, 2L, 0L, 1L, 7L), ``8`` = c(1L,
    1L, 15L, 1L, 1L, 1L, 1L, 1L, 0L, 1L), ``9`` = c(4L, 1L, 0L, 1L,
    2L, 5L, 1L, 2L, 1L, 0L)), class = "data.frame", row.names = c("0",
    "1", "2", "3", "4", "5", "6", "7", "8", "9"))
    

    【讨论】:

    • 您好,非常感谢,我刚刚意识到我的代码不起作用的原因是因为我使用的是矩阵而不是 as.matrix,所以您的提醒非常有效。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多