【发布时间】:2017-10-13 18:06:55
【问题描述】:
我知道全局图的度数,但现在我需要找到子图中节点的度数。所以,John 在他的学校有 4 个朋友,但在他的班上有 3 个朋友。我如何指示 igraph 计算他班上的这三个朋友,而不是他学校里的其他人?
我的全局图表
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)
我的 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)
我的 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_graph”中节点的度数,但只计算它们在子图中的关系,而不是全局图。我更新了问题以明确这一点。
-
根据您的定义,您期望的实际数值会更加清晰。
-
让我看看我是否理解你的问题。 “A”在全局图中有四个朋友,但其中只有三个隶属于“P”类。所以我希望“A”的程度是三而不是四。 D 的度数在子图中为 2,而在全局图中为 3。这是否澄清了问题?
-
等等,A 有四个朋友(B、D、F、G),但其中只有两个在 P 中(D、G)。那么A的学位不是2吗?或者您是否将每个节点都视为连接到自身?