使用R中igraph对象的条件提取边列表

Pau*_*ine 6 attributes r edge-detection igraph

我正在使用由不同类型的节点组成的无向igraph对象(例如,黄色的男性M和橙色的女性F):

g <- graph.atlas(711)
V(g)$name <- 1:7
V(g)$gender <- c("M","F","M","M","M","F","F")
V(g)$color <- ifelse(V(g)$gender=="F", "orange","yellow")
g<-delete.edges(g, E(g, P=c(1,2,2,3,2,7,7,6,7,3,3,4,3,5,4,5,5,6,6,1))) 
g<-add.edges(g,c(1,4,4,5,5,1,4,7,7,3,3,5,5,7,2,7,7,6,6,2,6,4))
plot(g)
Run Code Online (Sandbox Code Playgroud)

我想提取一个由连接不同类型节点(男性和女性)的边组成的边列表:

edgelist <- rbind(c(3,7),
               c(4,6),
               c(4,7),
               c(5,7))
Run Code Online (Sandbox Code Playgroud)

assortativity 使用连接M和F类型的顶点的边缘部分,但我不知道这些边缘提取明显.

get.edgelist 仅返回整个边缘列表,不可能设置条件.

MrF*_*ick 5

您可以使用%--%选择器查找将男性节点连接到女性节点的边缘.例如

E(g)[V(g)[gender=="M"] %--% V(g)[gender=="F"]]
Run Code Online (Sandbox Code Playgroud)

所述V(g)[gender=="M"]的发现所有的"男"的节点和V(g)[gender=="F"]发现所有女性节点和%--%发现所有这两组之间的边缘.