【问题标题】:Calculate degree of a subgraph using r igraph使用 r igraph 计算子图的度数
【发布时间】: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吗?或者您是否将每个节点都视为连接到自身?

标签: r igraph degrees


【解决方案1】:

您可以找到类 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

【讨论】:

  • 函数 .nei 给了我一个错误。你知道为什么会这样吗?
  • 您使用的是什么版本的 igraph?这是用igraph_1.1.2 测试的。我认为它在以前的版本中被称为别的东西。
  • 我有 igraph 1.0.1 错误信息是: eval(expr, envir, enclos) 中的错误:找不到函数“.nei”
  • 这是你的 Rstudio 版本,与 igraph 包版本号无关。检查sessionInfo()。也许运行update.packages("igraph")。或者查看已安装版本的文档,了解提取相邻顶点的语法。
  • 你是对的。我的 igraph 是 1.0.1。你知道这个版本中 .nei 的等价物是什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多