在R中使用igraph导入边列表

4

我正在尝试将边缘列表导入到R中的igraph图对象中。下面是我的尝试方法:

graph <- read.graph(edgeListFile, directed=FALSE)

我以前用过这种方法很多次,但对于这个特定的数据集却行不通:
294834289 476607837
560992068 2352984973
560992068 575083378
229711468 204058748
2432968663 2172432571
2473095109 2601551818    
...

我遇到了R语言的这个错误:

Error in read.graph.edgelist(file, ...) : 
At structure_generators.c:84 : Invalid (negative) vertex id, Invalid vertex id

我所看到的这个数据集和我之前使用的数据集唯一的区别是,之前那些数据集是从1开始排序的:

1 1
1 2
2 4
...

有任何线索吗?
1个回答

9

看起来它很可能将值解释为索引而不是节点名称,并且可能将它们存储在一个有符号整数字段中,该字段太小并且可能会溢出成负数。一种潜在的解决方法是

library("igraph")

dd <- read.table("test.txt")
gg <- graph.data.frame(dd, directed=FALSE)
plot(gg)

enter image description here

看起来这种方法没有溢出的问题(假设那就是问题所在)。


非常感谢。问题解决了。我绝对猜不出来是数据类型的问题。 - seekme_94
3
另一种选择是使用read.graph("test.txt", format="ncol", directed=FALSE),因为NCOL格式使用符号顶点名称,所以文件中的每个数字只需存储在相应顶点的“name”属性中。 - Tamás
如何进行反向操作:将图形中的 V 和 E 导出到文件中。 - Sigur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接