目前,我从边缘列表中读取图表如下:
>> require(igraph) # i have igraph 1.1.0
>> g1 <- read_graph(graphname, format='ncol')
>> V(g1)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46 47 48 49 50 52 56 57 58
[50] 59 60 61 62 63 64 65 67 68 41 69 43 53 37 39 45 51 54 55 66 70
正如你所看到的,顶点排序是完全错误的,尽管顶点具有令人难以置信的,令人难以置信的基本命名约定(它们都只是整数)。这是非常有问题的,因为igraph中get.adjacency
函数的排序(返回70x70矩阵)取决于V(g1)
中顶点的排序,所以当我尝试与某些{{1}进行比较时使用相同的顶点集合,它们同样处于一种荒谬的无意义排序(但与此处不同)导致图形样本中的不一致图形顶点,尽管它们都具有相同的顶点标签。有没有办法纠正这个问题,这样我就可以轻松地重新排序图形中的顶点,以便生成的邻接矩阵具有合理的排序?
编辑:注意我已经尝试使用g2
函数置换顶点:
permute.vertices
当我在以下方式阅读我的图表时,我设法让它工作了:
>> gtest <- permute.vertices(g1, as.numeric(V(g1))) # permute vertex ids by the ordering returned by V()
>> V(gtest) # too bad it doesn't work...
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46 47 48 49 50 52 56 57 58
[50] 59 60 61 62 63 64 65 67 68 41 69 43 53 37 39 45 51 54 55 66 70
但如果这真的是唯一的方式,这似乎有点荒谬。有人有任何其他建议吗?
谢谢!