iGraph,R - 来自二分组的子关联矩阵(不计算整个关联矩阵)
iGraph, R - sub-incidence matrices from bipartite groups (without computing entire incidence matrix)
从两个 data.frames df1
和 df2
开始,它们之间有连接键,我最终得到如下 data.frame
# df3
# V ID1 X ID2
# 1 V1 1 X2 12
# 2 V2 2 X1 11
# 3 V2 2 X2 12
# 4 V3 3 X2 12
# 5 V2 2 X3 13
# 6 V4 4 X3 13
# 7 V5 5 X4 14
# 8 V6 6 X4 14
# 9 V7 7 X5 15
# 10 V8 8 X5 15
# 11 V9 9 X5 15
# 12 V8 8 X6 16
# 13 V10 10 X6 16
其中列 V
和 X
标识二分图的两组并排列边。 (我为下一个添加两列 ID1
和 ID2
)由此我需要将二分图(BG)作为中间步骤,然后是所有簇的关联矩阵(最大独立顶点).
为了获得 BG,我会使用
df4 <- subset(df3, select=c("ID1","ID2"))
bg <- make_bipartite_graph(c(rep(0,nrow(df1)),rep(1,now(df2))), c(t(df4)))
第一个问题,有没有其他更聪明的方法可以从我的 data.frame 中获取二分图而不使用 ID 列,而是直接使用 V
和 X
?
然后,对于集群,我会使用 clusters
函数,但我不知道该怎么做才能获得关联矩阵的子集(没有获得整个关联矩阵太大了)。你有什么想法吗?
我不知道我是否猜对了,但也许你想要
library(igraph)
df <- df3[, c(1, 3)]
g <- graph_from_data_frame(df)
V(g)$type <- substr(V(g)$name, 1, 1)=="V"
plot(as.undirected(g), layout=layout.bipartite(g)[, 2:1])
gs <- decompose(g)
lapply(gs, as_incidence_matrix)
# [[1]]
# V1 V2 V3 V4
# X2 1 1 1 0
# X1 0 1 0 0
# X3 0 1 0 1
#
# [[2]]
# V5 V6
# X4 1 1
#
# [[3]]
# V7 V8 V9 V10
# X5 1 1 1 0
# X6 0 1 0 1
从两个 data.frames df1
和 df2
开始,它们之间有连接键,我最终得到如下 data.frame
# df3
# V ID1 X ID2
# 1 V1 1 X2 12
# 2 V2 2 X1 11
# 3 V2 2 X2 12
# 4 V3 3 X2 12
# 5 V2 2 X3 13
# 6 V4 4 X3 13
# 7 V5 5 X4 14
# 8 V6 6 X4 14
# 9 V7 7 X5 15
# 10 V8 8 X5 15
# 11 V9 9 X5 15
# 12 V8 8 X6 16
# 13 V10 10 X6 16
其中列 V
和 X
标识二分图的两组并排列边。 (我为下一个添加两列 ID1
和 ID2
)由此我需要将二分图(BG)作为中间步骤,然后是所有簇的关联矩阵(最大独立顶点).
为了获得 BG,我会使用
df4 <- subset(df3, select=c("ID1","ID2"))
bg <- make_bipartite_graph(c(rep(0,nrow(df1)),rep(1,now(df2))), c(t(df4)))
第一个问题,有没有其他更聪明的方法可以从我的 data.frame 中获取二分图而不使用 ID 列,而是直接使用 V
和 X
?
然后,对于集群,我会使用 clusters
函数,但我不知道该怎么做才能获得关联矩阵的子集(没有获得整个关联矩阵太大了)。你有什么想法吗?
我不知道我是否猜对了,但也许你想要
library(igraph)
df <- df3[, c(1, 3)]
g <- graph_from_data_frame(df)
V(g)$type <- substr(V(g)$name, 1, 1)=="V"
plot(as.undirected(g), layout=layout.bipartite(g)[, 2:1])
gs <- decompose(g)
lapply(gs, as_incidence_matrix)
# [[1]]
# V1 V2 V3 V4
# X2 1 1 1 0
# X1 0 1 0 0
# X3 0 1 0 1
#
# [[2]]
# V5 V6
# X4 1 1
#
# [[3]]
# V7 V8 V9 V10
# X5 1 1 1 0
# X6 0 1 0 1