我正在使用稀疏数据网络集,数据集中的顶点id可能包含一个值,在1-4000范围内的任何位置,例如一小部分数据可能包含顶点值 2,300,400,700,3000,......
我不清楚Igraph库是否只接受稀疏数据集或期望值的范围?
在调用任何Igraph函数之前,是否已将数据集重新定义/重新映射到连续数据范围 例如,按照
重新映射数据值然后调用Igraph函数并在Igraph函数完成后执行反向映射,或者我可以在2,300,400,700,3000范围内调用Igraph函数而不进行任何重映射?
答案 0 :(得分:1)
igraph
顶点和边缘索引始终是连续的整数范围,即如果R igraph
中有20个节点,则顶点索引将从1
转到20
并且在{ {1}}从Python igraph
到0
。此外,如果添加或删除元素,则不保证索引保持不变。因此,解决方案是使用索引创建顶点属性。例如:
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