使用 rigraph 计算子图的度数
Calculate degree of a subgraph using r igraph
我知道我的全局图的度数,但现在我需要找到子图中节点的度数。所以,约翰在他的学校有 4 个朋友,但在他的 class 中有三个朋友。我如何指示 igraph 计算他 class 中的那三个朋友,而不计算他学校中的其他朋友?
我的全局图
library(igraph)
school <- read.table(text="
A B C D E F G
A 0 1 0 1 0 1 1
B 1 0 1 1 0 1 0
C 0 0 0 0 0 0 1
D 1 1 0 0 1 0 0
E 0 0 0 1 0 1 1
F 0 1 0 0 1 0 1
G 1 0 1 0 1 1 0", header=TRUE)
mat <- as.matrix(school)
g <- graph.adjacency(mat, mode="undirected", add.rownames = T)
我的 classes P、Q 和 R
的隶属关系矩阵
x <- read.table(text="
P Q R
A 1 1 0
B 0 0 1
C 0 0 0
D 1 0 1
E 1 1 0
F 0 1 0
G 1 1 1", header=TRUE)
inc <- as.matrix(x)
ginc <- graph.incidence(inc)
我的子图 class P
class_nodes <- names(which(inc[,"P"] == 1))
class_adj <- mat[class_nodes, class_nodes]
class_graph <- graph.adjacency(class_adj, mode = "undirected")
我需要计算子图中节点的度 "class_graph",但只计算它们在子图中的关系,而不是全局图。
您可以找到 class P 中的所有节点(我们专门提取名称,以便我们可以在不同的图形对象中查找它们)。
V(ginc)[.nei("P")]$name
然后您可以使用
从主图中提取连接子集
subg <- induced.subgraph(g, V(ginc)[.nei("P")]$name)
你可以用
计算这些节点的度数
degree(subg)
# A D E G
# 2 2 2 2
我知道我的全局图的度数,但现在我需要找到子图中节点的度数。所以,约翰在他的学校有 4 个朋友,但在他的 class 中有三个朋友。我如何指示 igraph 计算他 class 中的那三个朋友,而不计算他学校中的其他朋友?
我的全局图
library(igraph)
school <- read.table(text="
A B C D E F G
A 0 1 0 1 0 1 1
B 1 0 1 1 0 1 0
C 0 0 0 0 0 0 1
D 1 1 0 0 1 0 0
E 0 0 0 1 0 1 1
F 0 1 0 0 1 0 1
G 1 0 1 0 1 1 0", header=TRUE)
mat <- as.matrix(school)
g <- graph.adjacency(mat, mode="undirected", add.rownames = T)
我的 classes P、Q 和 R
的隶属关系矩阵x <- read.table(text="
P Q R
A 1 1 0
B 0 0 1
C 0 0 0
D 1 0 1
E 1 1 0
F 0 1 0
G 1 1 1", header=TRUE)
inc <- as.matrix(x)
ginc <- graph.incidence(inc)
我的子图 class P
class_nodes <- names(which(inc[,"P"] == 1))
class_adj <- mat[class_nodes, class_nodes]
class_graph <- graph.adjacency(class_adj, mode = "undirected")
我需要计算子图中节点的度 "class_graph",但只计算它们在子图中的关系,而不是全局图。
您可以找到 class P 中的所有节点(我们专门提取名称,以便我们可以在不同的图形对象中查找它们)。
V(ginc)[.nei("P")]$name
然后您可以使用
从主图中提取连接子集subg <- induced.subgraph(g, V(ginc)[.nei("P")]$name)
你可以用
计算这些节点的度数degree(subg)
# A D E G
# 2 2 2 2