如何从图中返回顶点ID

Cpt*_*emo 16 r igraph

请考虑以下事项

library(igraph)
id <- c("1","2","A","B")
name <- c("02 653245","03 4542342","Peter","Mary")
category <- c("digit","digit","char","char")
from <- c("1","1","2","A","A","B")
to <- c("2","A","A","B","1","2")

nodes <- cbind(id,name,category)
edges <- cbind(from,to)

g <- graph.data.frame(edges, directed=TRUE, vertices=nodes)
Run Code Online (Sandbox Code Playgroud)

现在我想使用我用于从数据框创建图形的ID来访问图形的特定顶点id <- c("1","2","A","B").

假设我想访问第三个顶点 - 最初用"A"标识.有没有办法用类似的东西访问顶点

V(g)$id == "A"
Run Code Online (Sandbox Code Playgroud)

无论如何要获得idname?也就是说,如果我跑

which(V(g)$name == "Peter")
Run Code Online (Sandbox Code Playgroud)

我得到3.如何A取而代之?

Gab*_*rdi 24

首先,igraph使用顶点属性name作为顶点的符号id.我建议你添加id作为name其他属性使用另一个名称,例如realname.

但是,如果使用符号名称,通常不需要知道数字ID,因为所有函数也接受(嗯,它们应该)符号id.例如,如果你想要顶点的程度Peter,你可以说degree(g, "Peter").

如果你真的想要数字id,你可以做以下事情:

as.numeric(V(g)["Peter"])
# [1] 3
match("Peter", V(g)$name)
# [1] 3
Run Code Online (Sandbox Code Playgroud)

如果你想idname你的例子中得到,你可以用结果索引该向量:

id[ match("Peter", V(g)$name) ]
Run Code Online (Sandbox Code Playgroud)