[英]node attribute csv igraph
我有大量从Excel导出的csv格式的邻接矩阵。 我也有大量的csv。 具有顶点属性数据的文件。 我已经在SNA中链接了它们,但是igraph在功能上走得更远,因此我希望继续使用它,但无法构建graph + attribute文件。
我正在寻找设置一些代码,这些代码将成为进行一系列绘图的主要工具。 尽管似乎有很多方法可以链接这两个数据集,但这似乎是最简单的:为了使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
我收到不同的错误消息:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.