2014-01-19 74 views
1

我有大量的邻接矩阵,以csv格式从excel中导出。我也有大量的csv。具有顶点属性数据的文件。 我已经在SNA中链接了它们,但是igraph在功能上进一步发展,所以我期望移动到它,但是我无法构建图+属性文件。节点属性csv 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]给出了米网络中的第一节点的属性的值,即节点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

回答

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

... the first two columns of d are used as a symbolic edge list and additional columns as edge attributes. The names of the attributes are taken from the names of the columns.

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

如果你有一个邻接矩阵,那么你可以使用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) 
+0

许多感谢的Gabor。我会高兴地分享csv文件,这将使其重现,但我不知道如何做到这一点。 – user14470

+0

嗨,我努力使其在网站上可重现,并且我还不够高级发布图像,但我希望数据的格式清晰。 – user14470

+0

我不确定这将是多么可重复,但希望你会看到足以发现我的错误。谢谢你的耐心。 – user14470