iGraph编辑顶点ID
这个问题的动机有点微不足道,但我希望它能帮助我澄清一些关于igraph和顶点的困惑。我很抱歉这么长,但我保证这是一个快速阅读 我有一个问题,使用graph.formula()从已标记顶点的图片中重新创建一个图非常简单,因此很自然,除非我非常小心在graph.formula()中输入顶点的顺序,否则顶点ID和名称将不匹配 为想要的人提供图表图片: 代码: 但是这个输出对应于顶点ID,我对使用顶点名称感兴趣,所以我尝试:iGraph编辑顶点ID,r,igraph,R,Igraph,这个问题的动机有点微不足道,但我希望它能帮助我澄清一些关于igraph和顶点的困惑。我很抱歉这么长,但我保证这是一个快速阅读 我有一个问题,使用graph.formula()从已标记顶点的图片中重新创建一个图非常简单,因此很自然,除非我非常小心在graph.formula()中输入顶点的顺序,否则顶点ID和名称将不匹配 为想要的人提供图表图片: 代码: 但是这个输出对应于顶点ID,我对使用顶点名称感兴趣,所以我尝试: >V(g)$name [as.vector(get.shortest
>V(g)$name [as.vector(get.shortest.paths(g,from="1",to="5"))]
Error in V(g)$name [as.vector(get.shortest.paths(g, from = "1", to = "5"))] :
invalid subscript type 'list'
还有一系列的变化,但我似乎无法得到顶点名称的列表
所以有两个问题:1) 我怎样才能让它显示我从顶点名称中得到的顶点ID列表?我在这里遗漏了一些明显的东西…
2) 有没有办法重新分配顶点ID?我还没有找到任何关于这方面的信息,所以我认为这是不可能的,但这将是解决我的问题的最简单的解决方案,而不是通过属性进行工作
谢谢你的任何意见 您的问题是
get.shortest.paths
生成一个列表,因为可能有多条最短路径。因此,在只有一条最短路径的情况下,您可以通过使用[[
访问列表数据来解决此问题:
V(g)$name[get.shortest.paths(g,from="1",to="5")[[1]]]
#[1] "1" "4" "5"
如果您有多条最短路径,这在实际示例中是可能的,那么使用以下路径会更安全:
lapply(get.shortest.paths(g,from="1",to="5"),function(x) V(g)$name[x] )
#[[1]]
#[1] "1" "4" "5"
Re 2):permute。顶点
允许您使用置换向量置换图的顶点。理论上,您可以构造置换向量,将您的姓名映射到正确的ID。
V(g)$name[get.shortest.paths(g,from="1",to="5")[[1]]]
#[1] "1" "4" "5"
lapply(get.shortest.paths(g,from="1",to="5"),function(x) V(g)$name[x] )
#[[1]]
#[1] "1" "4" "5"