支持稀疏网络的igraph

时间:2017-03-23 20:36:41

标签: r igraph

我正在使用稀疏数据网络集,数据集中的顶点id可能包含一个值,在1-4000范围内的任何位置,例如一小部分数据可能包含顶点值 2,300,400,700,3000,......

我不清楚Igraph库是否只接受稀疏数据集或期望值的范围?

在调用任何Igraph函数之前,是否已将数据集重新定义/重新映射到连续数据范围 例如,按照

重新映射数据值
  • 2变为1
  • 300变为2
  • 400变为3
  • 700变为4
  • 3000变为5

然后调用Igraph函数并在Igraph函数完成后执行反向映射,或者我可以在2,300,400,700,3000范围内调用Igraph函数而不进行任何重映射?

1 个答案:

答案 0 :(得分:1)

igraph顶点和边缘索引始终是连续的整数范围,即如果R igraph中有20个节点,则顶点索引将从1转到20并且在{ {1}}从Python igraph0。此外,如果添加或删除元素,则不保证索引保持不变。因此,解决方案是使用索引创建顶点属性。例如:

19

请注意require(igraph) vertices <- sample(1:4000, 20, replace=F) source <- sample(vertices, 40, replace = T) target <- sample(vertices, 40, replace = T) edges <- data.frame(source = source, target = target) g <- graph.data.frame(edges) g IGRAPH DN-- 20 40 -- + attr: name (v/c) + edges (vertex names): [1] 2943->3671 822 ->1587 922 ->1694 822 ->1096 1694->1739 922 ->1096 [7] 922 ->1739 1739->1587 2943->2666 2891->2956 1096->822 267 ->839 [13] 2891->2666 767 ->839 767 ->2956 1694->523 839 ->1739 1096->3641 [19] 1348->1739 350 ->839 1096->267 523 ->922 3641->1739 267 ->699 [25] 523 ->1739 1587->699 267 ->1096 1587->3641 523 ->1587 1739->839 [31] 1587->3641 1348->267 1694->350 1587->755 1348->922 839 ->2666 [37] 1739->699 922 ->1348 3641->2891 1096->2943 自动创建顶点属性igrap来存储原始索引,而内部索引像往常一样name。顶点1:20将始终具有此名称,除非您更改它,而其当前索引为2943,但它可以在重新索引时更改。

1