节点属性csv igraph

时间:2014-01-19 18:57:21

标签: r csv attributes igraph

我有大量的邻接矩阵,从excel导出的csv格式。我也有大量的csv。具有顶点属性数据的文件。 我已经在SNA中链接它们但是igraph在功能上更进一步,所以我希望转向它,但我无法构建图形+属性文件。

我希望设置一些代码,这些代码将成为制作一系列情节的主力。 虽然似乎有很多方法可以链接这两个数据集,但这似乎是最简单的: 为了使csv中的邻接矩阵成为一个数据框(减少了丢失的顶点数据)我使用:

m <- read.table(header=TRUE, check.names=FALSE, textConnection("
      2 3 4 5 6 7 
    2 0 1 1 0 1 0 
    3 1 0 0 0 1 0 
    4 0 0 0 0 0 0 
    5 1 0 1 0 0 1 
    6 0 0 0 0 0 0 
    7 1 1 0 1 0 0 
"))

如果在原始文件中同时包含顶点和行名称,则导入的属性文件具有顶点名称和对应于节点名称的“row.names”。 Hex.ed[1,1]给出m网络中第一个节点的属性值,即节点2:

Hex.ed <- read.table(header=TRUE, textConnection("
        HH    Emo  Extra   Aggr Consci    OTE
  2 3.3750 3.0000 3.0000 3.0000 3.0625 3.4375
  3 3.5625 2.9375 3.0625 3.0000 3.3125 3.6250
  4 3.2500 2.8750 3.7500 3.2500 3.8750 3.5000
  5 3.6875 3.1250 3.3750 3.5625 3.6250 3.3125
  6 3.3125 3.0000 3.3125 3.8750 3.2500 3.6875
  7 3.8125 3.2500 3.5625 2.8750 3.6875 3.4375
"))

g <- graph.data.frame(m, directed=TRUE, vertices=Hex.ed)

但是,我收到错误:Error in graph.data.frame(m, directed = TRUE, vertices = Hex.ed) : Duplicate vertex names

1 个答案:

答案 0 :(得分:0)

我收到了不同的错误消息:

Error in graph.data.frame(m, directed = TRUE, vertices = Hex.ed) : 
  Some vertex names in edge list are not listed in vertex data frame

但这是因为您没有在问题中运行示例,但可能使用了您的完整数据集。

无论如何,graph.data.frame不使用邻接矩阵。来自http://igraph.sourceforge.net/doc/R/graph.data.frame.html的文档:

  

... d的前两列用作符号边缘列表和   附加列作为边缘属性。属性的名称是   取自列的名称。

如果你关心阅读手册,你会在底部看到一个例子。

如果你有一个邻接矩阵,那么你可以使用graph.adjacency创建图形,然后逐个添加顶点属性:

g <- graph.adjacency(as.matrix(m))
for (i in seq_len(ncol(Hex.ed))) {
  g <- set.vertex.attribute(g, colnames(Hex.ed)[i], value=Hex.ed[,i])
}
g
# IGRAPH DN-- 6 11 -- 
# + attr: name (v/c), HH (v/n), Emo (v/n), Extra (v/n), Aggr (v/n),
#   Consci (v/n), OTE (v/n)