这是我第一次使用图形和 R igraph 包进行工作,需要处理图形对象并寻求帮助。
我想要实现的目标: 从给定的联系矩阵中提取节点之间最短的可信路径。这里的可信是指边的权重高于相邻边的情况。
举例说明: A
在矩阵
在矩阵
问题B:如果边缘权重很低,如何不将节点分配给聚类?
这是我的第一个问题,如果需要澄清或更好的例子,我会改进我的问题。
我想要实现的目标: 从给定的联系矩阵中提取节点之间最短的可信路径。这里的可信是指边的权重高于相邻边的情况。
举例说明: A
m <- read.table(row.names = 1, header = TRUE, text =
" A B C D E F
A 0 1 1 1 1 5
B 1 0 1 1e2 1e2 1
C 1 1 0 1 1 1
D 1 1e2 1 0 1e2 1
E 1 1e2 1 1e2 0 1
F 5 1 1 1 1 0")
m <- as.matrix(m)
ig <- graph.adjacency(m, mode = "undirected", weighted = TRUE, diag = FALSE)
sp <- shortest.paths(ig, algorithm = "dijkstra")
在矩阵
m
中,有一个群集(团)在B-D-E
之间(即,这些节点之间的边权重很高)。然而,由于A
和F
之间存在权重,我在那里也得到了群集,尽管边权重很低(仅为5)。
问题A:如何仅提取具有高边权重的那些群集?我可以使用m[which(m <= 5)] <- 0
将这些联系转换为0,但我希望在igraph
软件包中有更多“数学”解决方案。
B
m <- read.table(row.names = 1, header = TRUE, text =
" A B C D E F
A 0 1 1 5 1 1
B 1 0 1 1e2 1e2 1
C 1 1 0 1 1 1
D 5 1e2 1 0 1e2 1
E 1 1e2 1 1e2 0 1
F 1 1 1 1 1 0")
m <- as.matrix(m)
ig <- graph.adjacency(m, mode = "undirected", weighted = TRUE, diag = FALSE)
sp <- shortest.paths(ig, algorithm = "dijkstra")
在矩阵
m
中,B-D-E
之间存在一个聚类,但由于A
和B
之间的权重很低,A
也连接到了这个聚类。问题B:如果边缘权重很低,如何不将节点分配给聚类?
这是我的第一个问题,如果需要澄清或更好的例子,我会改进我的问题。
igraph
存在一些误解。现在我知道我需要在矩阵中寻找社区,而cluster_[...]
或community.[...]
为我的任务提供了正确的函数。 - user54101