使用 R 从非对称(有向)邻接矩阵中查找所有节点的度数(中心性)
Finding degree (centrality) of all nodes from an asymmetric (directed) adjacency matrix with R
我有一个表示为邻接矩阵的简单网络示例。
我试图找出每个 node/vertex(人)
的度数
根据定义,节点的度是它与其他节点的连接数。按照惯例,在有向(即非对称)矩阵中,平局的发送方是行,平局的目标是列。
邻接矩阵(对角线为 1):
matrix(c(1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,1), ncol = 4)
结果应该是:
鲍勃:2
卡罗尔:2
泰德:3
爱丽丝:1
我试图通过编写一个函数来解决这个问题,但它没有给出正确的结果(Carol = 1,而不是 2)
degree_centralty <- function(x) rowSums(x != 0)-1
我是不是做错了什么?
通过使用 rowSums
或 colSums
,您将只计算一种连接。你想要的是两者的并集,可以找到如下:
degree_centralty <- function(x) rowSums(x + t(x) != 0) - 1
degree_centralty(A)
# [1] 2 2 3 1
现在 x + t(x)
是一个对称矩阵。
我有一个表示为邻接矩阵的简单网络示例。
我试图找出每个 node/vertex(人)
的度数根据定义,节点的度是它与其他节点的连接数。按照惯例,在有向(即非对称)矩阵中,平局的发送方是行,平局的目标是列。
邻接矩阵(对角线为 1):
matrix(c(1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,1), ncol = 4)
结果应该是:
鲍勃:2 卡罗尔:2 泰德:3 爱丽丝:1
我试图通过编写一个函数来解决这个问题,但它没有给出正确的结果(Carol = 1,而不是 2)
degree_centralty <- function(x) rowSums(x != 0)-1
我是不是做错了什么?
通过使用 rowSums
或 colSums
,您将只计算一种连接。你想要的是两者的并集,可以找到如下:
degree_centralty <- function(x) rowSums(x + t(x) != 0) - 1
degree_centralty(A)
# [1] 2 2 3 1
现在 x + t(x)
是一个对称矩阵。