1

我在我的网络上执行了一个社区检测算法,并有一个集群列表作为输出。我想对这些集群做几件事,但正在努力解决如何操作它们。首先,我想通过引用例如集群 1 创建子图。下面是我的一些代码。

我有一个看起来像这样的数据
框 Person1 Person2 Volpc
Person A Person B 0.08
Person A Lady A 0.08
Person A Lady B 0.23
Person A Lady C 0.38
Lady B Mr CC 0.29
Lady B Lady A 0.23
Lady B Person B 0.87
Lady C Lady A 0.87
女士 C 女士 B 1.01
先生 D 先生 CC 0.94

#First I created an adjacency matrix from by data set of links LinkSummary for which
#the weight is named Volpc

G <- graph.data.frame(LinkSummary,directed=FALSE);
A <- as_adjacency_matrix(G,type="both",names=TRUE,sparse=FALSE,attr="Volpc");


#build a graph

netw <- graph.adjacency(A,weighted=T, mode="undirected")

#remove loops
netw <- simplify(netw)

#I used the walktrap algorithm to find communities
wt<- walktrap.community(netw, steps=6,modularity=TRUE,weights = E(G)$Volpc)

我一直在试验集群的数量以找到最佳解决方案。
如果没有这个选项,很多节点都被放置在一个庞大的集群中。这有助于打破他们。

#increase number clusters
wt2 <- cut_at(wt, no=300)

我将结果放入表中并将它们输出到 excel 并生成看起来像这样的东西

memtwt <- table(names, wt2 )
write.table(memtwt, file="clipboard-16384", sep="\t", row.names=TRUE) increase buffer

节点 1 2 3 4
人 A 1 0 0 0
女士 A 0 1 0 0
女士 B 1 0 0 0
女士 C 0 0 0 1
先生 D 0 0 1 0
人 B 0 0 1 0
先生 CC 1 0 0 0

不幸的是,看起来我的很多集群都基于与一个节点的关系。要查看交互,我创建了一个子网(使用此处的代码Creating Subgraph using igraph in R

# we want a sub-network containing the following nodes:
subv <- c('Person A','Lady B','Mr CC')


# create a sub-network composed by ONLY the nodes in subv and the edges 
# between them
g2 <- induced.subgraph(graph=netw,vids=subv)

plot(g2,  vertex.size=3, edge.color="black",edge.width=E(g2)$weight/10)

我想要的是能够将每个集群分配给一个变量,以便每次我有不同的结果时都可以查看子网,而无需输入名称列表,就像这样......

subv <- wt2(1)
g3 <- induced.subgraph(graph=netw,vids=subv)

任何人都可以帮助我吗?

4

0 回答 0