从 R 中的 igraph 对象中提取带条件的边列表
Extracting an edge list with conditions from an igraph object in R
我正在使用由不同类型的节点组成的无向 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)
我想提取一个由连接不同类型(男性和女性)节点的边组成的边列表:
edgelist <- rbind(c(3,7),
c(4,6),
c(4,7),
c(5,7))
assortativity
使用连接 M 和 F 类型顶点的边的分数,但我不知道要显式提取这些边。
get.edgelist
仅 returns 整个边缘列表,无法设置条件。
edges = get.edgelist(g)
edges[rowSums(apply(edges, 2, function(x) get.vertex.attribute(g, "gender", x)) == "M") == 1,]
# [,1] [,2]
#[1,] 4 7
#[2,] 3 7
#[3,] 5 7
#[4,] 4 6
您可以使用 %--%
选择器来查找连接男性节点和女性节点的边。例如
E(g)[V(g)[gender=="M"] %--% V(g)[gender=="F"]]
V(g)[gender=="M"]
找到所有 "male" 节点,V(g)[gender=="F"]
找到所有女性节点,%--%
找到两组之间的所有边。
我正在使用由不同类型的节点组成的无向 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)
我想提取一个由连接不同类型(男性和女性)节点的边组成的边列表:
edgelist <- rbind(c(3,7),
c(4,6),
c(4,7),
c(5,7))
assortativity
使用连接 M 和 F 类型顶点的边的分数,但我不知道要显式提取这些边。
get.edgelist
仅 returns 整个边缘列表,无法设置条件。
edges = get.edgelist(g)
edges[rowSums(apply(edges, 2, function(x) get.vertex.attribute(g, "gender", x)) == "M") == 1,]
# [,1] [,2]
#[1,] 4 7
#[2,] 3 7
#[3,] 5 7
#[4,] 4 6
您可以使用 %--%
选择器来查找连接男性节点和女性节点的边。例如
E(g)[V(g)[gender=="M"] %--% V(g)[gender=="F"]]
V(g)[gender=="M"]
找到所有 "male" 节点,V(g)[gender=="F"]
找到所有女性节点,%--%
找到两组之间的所有边。