请考虑以下事项
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)
无论如何要获得id从name?也就是说,如果我跑
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)
如果你想id从name你的例子中得到,你可以用结果索引该向量:
id[ match("Peter", V(g)$name) ]
Run Code Online (Sandbox Code Playgroud)