【发布时间】:2019-05-23 12:18:47
【问题描述】:
我想知道是否有人可以给我一些关于在给定集群的情况下编写诸如“共享邻居分布”之类的函数的线索。我发现 Cytoscape NetworkAnalyzer 中的这个功能对我的研究目的非常有用。由于我有许多要分析的集群,因此为这项工作编写一个脚本会很方便。欢迎提出使用 igraph、networkx 等的建议。非常感谢你!
例如:
edgelist <- read.table(text = "
E B
E A
B D
B F
B C
A C
A F
A D")
library(igraph)
graph <- graph.data.frame(edgelist,directed=F)
plot(graph)
我们会看到这样的图表: enter image description here
其中两个节点(C、D、E、F)共享节点 A 和 B。即 6 次。 节点 A 和 B 共享节点(C、D、E、F)。 总的来说,总结应该是这样的: enter image description here
我不知道是否有更好的解决方案,而不是编写一个循环(获取每个顶点的邻居,并比较它们)。
【问题讨论】:
-
你好。为了提供帮助,你能告诉我们这个函数需要什么样的输入以及输出是什么?到目前为止,您尝试过什么?
-
谢谢@Joel,我稍微修改了一下我的问题。简而言之,输入是一个图,输出是共享邻居数量的分布。
-
我有一个这样的想法:将图转换成邻接矩阵
matrix <- get.adjacency(graph, type=c("both"))然后我们按照行的内容对矩阵进行排序。