如何为每个组件添加集群 ID (igraph)
How to add the cluster ID to each component (igraph)
我知道如何使用R中的igraph包获取数据集中两列的连通分量。
数据集
library(data.table)
df = fread(
"rn A B
1: 11 6
2: 12 6
3: 11 7
4: 13 2
5: 12 7
6: 12 8
7: 17 2
8: 13 1")[, rn := NULL][]
library(igraph)
g = graph_from_data_frame(df)
cluster = clusters(g)
list = groups(cluster)
接下来我要做的是为每个连接的组件分配集群ID。
A B ID
1: 11 6 1
2: 12 6 1
3: 11 7 1
4: 13 2 2
5: 12 7 1
6: 12 8 1
7: 17 2 2
8: 13 1 2
我希望这是有道理的。谢谢
您可以通过以下任一方式提取成员资格:
df$ID <- cluster$membership[as.character(df$A)]
或者
df$ID <- cluster$membership[as.character(df$B)]
两者都应给出:
df
# A B ID
#1: 11 6 1
#2: 12 6 1
#3: 11 7 1
#4: 13 2 2
#5: 12 7 1
#6: 12 8 1
#7: 17 2 2
#8: 13 1 2
我知道如何使用R中的igraph包获取数据集中两列的连通分量。
数据集
library(data.table)
df = fread(
"rn A B
1: 11 6
2: 12 6
3: 11 7
4: 13 2
5: 12 7
6: 12 8
7: 17 2
8: 13 1")[, rn := NULL][]
library(igraph)
g = graph_from_data_frame(df)
cluster = clusters(g)
list = groups(cluster)
接下来我要做的是为每个连接的组件分配集群ID。
A B ID
1: 11 6 1
2: 12 6 1
3: 11 7 1
4: 13 2 2
5: 12 7 1
6: 12 8 1
7: 17 2 2
8: 13 1 2
我希望这是有道理的。谢谢
您可以通过以下任一方式提取成员资格:
df$ID <- cluster$membership[as.character(df$A)]
或者
df$ID <- cluster$membership[as.character(df$B)]
两者都应给出:
df
# A B ID
#1: 11 6 1
#2: 12 6 1
#3: 11 7 1
#4: 13 2 2
#5: 12 7 1
#6: 12 8 1
#7: 17 2 2
#8: 13 1 2