igraph没有显示我导入的正确网络

时间:2013-03-27 13:13:01

标签: r igraph sna

我想进行一些sna分析。我使用RStudio和igraph包。 我的输入数据来自文本文件(从excel创建,作为选项卡分隔的文本文件)。 数据文件有3列。第1行和第2行是网络数据(顶点),第3行是每条边的权重。我使用的机场连接数据如下:

1 54 28382(机场ID原始机场/机场ID目的地机场/ Passanger号码作为重量)

我使用以下命令加载id:

 USAN_num1 <- read.table('USAN_num.txt', header=T)
 USAN_g_num1 <- graph.data.frame(USAN_num1)
> summary(USAN_g_num1)
Vertices: 626 
Edges: 7078 
Directed: TRUE 
No graph attributes.
Vertex attributes: name.
Edge attributes: PAX.

数据如下所示:

  ORIGN DESTN  PAX
1     1   604  646
2     2    42 3736
3     2   118 5189

现在发生的问题: 当我用igraph检查时,我的网络包含6个不同的簇。即使我创建了网络的图形图片,它也有6个独立的部分。这完全没有意义,因为我的数据应该连接到一个网络。我查看了我的数据集,确实没有不同的子网络。

以下是我得到的群集特征:

$csize
[1]   5 608   2   4   5   2

$no
[1] 6

小型集群中的一个顶点甚至是一个巨大的机场,应该连接到许多其他机场,而不仅仅是另外一个......

更新: 我现在更新到最新的igraph版本,但它仍然无法正常工作。 我在此处将我的数据的示例性部分上传为.txt文件:USAN_numS.txt

如果有人知道我做错了什么,那会很棒。 谢谢

1 个答案:

答案 0 :(得分:1)

所以,正如我在上面的评论中所说,可能的混淆源是你的图形具有符号顶点名称,这些顶点名称实际上是数字并且与igraph的顶点id不匹配。解决方法是删除顶点名称,或在创建图形时明确指定它们,以便它们匹配igraph顶点id。

但是你的图形确实有多个组件,请参阅下面的代码,我在原始表中检查它,两个顶点只在表格中出现一次,它们自己组成两个组件。

也许网络确实有多个组件,或者文件中存在错误。

library(igraph)
USAN_num1 <- read.table('USAN_numS.txt', header=T)
USAN_g_num1 <- graph.data.frame(USAN_num1,
                   vertices=data.frame(id=1:max(USAN_num1[,1:2])))    
clu <- clusters(USAN_g_num1)
clu$csize
## [1]   5 607   2   4   5   1   2   1
## The '1's appear because we counted the vertices that are 
## not in the table

## Third component has two vertices only, let's check them in the
## original table
which(clu$membership == 3)
## [1]  64 617

## List the table rows where any of these two appear
USAN_num1[ USAN_num1[,1] %in% c(64, 617) | USAN_num1[,1] %in% c(64, 617), ]
##     ORIGN DESTN PAX
## 691    64   617 636