Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过使id从一开始准备igraph输入数据_R_Igraph - Fatal编程技术网

通过使id从一开始准备igraph输入数据

通过使id从一开始准备igraph输入数据,r,igraph,R,Igraph,我有一个有三列的数据库,前两列表示图的顶点ID,而第三列表示它们之间的距离 cbind(id1=c(10,10,30,12,400,30),id2=c(11,12,400,30,10,79),dist=c(1000,20000,30123,1233,20200,400)) id1 id2 dist [1,] 10 11 1000 [2,] 10 12 20000 [3,] 30 400 30123 [4,] 12 30 1233 [5,] 400 10 20

我有一个有三列的数据库,前两列表示图的顶点ID,而第三列表示它们之间的距离

cbind(id1=c(10,10,30,12,400,30),id2=c(11,12,400,30,10,79),dist=c(1000,20000,30123,1233,20200,400))

      id1 id2  dist
[1,]  10  11  1000
[2,]  10  12 20000
[3,]  30  400 30123
[4,]  12  30  1233
[5,]  400 10 20200
[6,]  30  79   400
为了让igraph包读取这些数据,顶点ID必须是连续的,并且从一开始。比如说:

    id1 id2  dist
[1,]  1  2  1000
[2,]  1  3 20000
[3,]  4  5 30123
[4,]  3  4  1233
[5,]  5  1 20200
[6,]  4  6   400
有人能给我建议一种自动完成的方法吗? 此外,我还想创建一个转换表,其中包含ID的原始名称和新名称:

    old_id new_id
[1,]    1    1
[2,]   11    2
[3,]   12    3
[4,]   30    4
[5,]  400    5
[6,]   79    6
提前感谢您的帮助

为了让igraph包读取这些数据,顶点ID必须是连续的,并且从一开始

这实际上并不完全正确,您可以使用符号ID:

library(igraph)

mat <- cbind(id1 =c(10,  10,   30,   12,  400,  30),
             id2 =c(11,  12,   400,  30,  10,   79),
             dist=c(1000,20000,30123,1233,20200,400))
g <- graph.data.frame(as.data.frame(mat))

g
# IGRAPH DN-- 6 6 -- 
# + attr: name (v/c), dist (e/n)

V(g)$name
# [1] "10"  "30"  "12"  "400" "11"  "79" 

str(g)
# IGRAPH DN-- 6 6 -- 
# + attr: name (v/c), dist (e/n)
# + edges (vertex names):
# [1] 10 ->11  10 ->12  30 ->400 12 ->30  400->10  30 ->79 
库(igraph)
垫12 30->400 12->30 400->10 30->79
确实容易多了:)我错过了这个基本功能!谢谢