【问题标题】:Adjacency matrix from dataframe with igraph R来自数据帧的邻接矩阵与 igraph R
【发布时间】:2019-03-06 07:59:08
【问题描述】:

我是 R 和图形方面的新手,我正在尝试使用 igraph 库在社交签名网络上进行练习。

我有一个包含三列的数据框 (df)。第一个是投票者,第二个是收到投票的用户,第三个是投票(-1 或 1,分别取决于反对票或赞成票)。

> head(df)

     voter        user      vote
1    ludraman     cjcurrie     1
2    blankfaze    olivo       -1
3    gzornenplatz cjcurrie     1
4    orthogonal   olvion       1
5    andrevan     cerviz       1
6    texture      cjcurrie     1

我想用 igraph 创建一个图,但首先我需要从 df 获取邻接矩阵。

我尝试了图书馆的sharpshootR

A <- component.adj.matrix(df[, c(1,2)], mu=df[, 1], co=df[, 2], wt=df[, 3])

有没有一种使用 igraph 库获取邻接矩阵的简单方法?

谢谢。

【问题讨论】:

  • 请在下方发布您的答案,而不是在问题内。

标签: r networking graph igraph


【解决方案1】:

如果我没看错你的问题,你可以使用 graph_from_data_frame from igraph 本身:

数据

d <- structure(list(voter     = c("ludraman", "blankfaze", "gzornenplatz", "orthogonal", 
                                  "andrevan", "texture"), 
                    user      = c("cjcurrie", "olivo", "cjcurrie", "olvion", "cerviz", "cjcurrie"), 
                    vote      = c(1L, -1L, 1L, 1L, 1L, 1L)), 
                    row.names = c("1", "2", "3", "4", "5", "6"), class = "data.frame")

igraph

library(igraph)
g <- graph_from_data_frame(d)
plot(g)

您可能可以从 tehre(给定您的完整数据)开始使用可视化中数据的其他部分(例如分数)。

【讨论】:

  • 谢谢!但是我的数据库太长了。我不能手写所有的名字和选票。
  • 你可以试试dput(head(your_data, nr_of_rows)),它会给你一个输出,你可以简单地复制粘贴到这里。
【解决方案2】:

此解决方案适用于我的问题:

edge_list <- training_edges[df].                # create a edge list
G <- graph.data.frame(edge_list, directed=TRUE) # create the graph

A <- as_adjacency_matrix(G,type="both",names=TRUE,
sparse=FALSE, attr = "vote")                    # create the adjacency matrix

其中 A 是邻接矩阵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多