【发布时间】:2021-11-01 19:06:01
【问题描述】:
我尝试在 2 个图上使用 union 函数,其中引入了同一图 G 的子图(因此它们之间没有冲突)。 我的问题是原始图(和子图)是加权的,另一方面,这些子图的并集不是。
这是我创建子图的代码(权重可以采用 {1, 2, 3, 4, 5} 中的值:
weights <- E(g)$weight
graphs <- list()
for (r in seq(5)) {
graphs[[r]] <- delete.edges(g, E(g)[weights!=r])
}
reduced_graphs <- list()
x <- numeric(5)
y <- numeric(5)
for (r in seq(5)) {
reduced_graphs[[r]] <- delete.vertices(graphs[[r]], V(graphs[[r]])[degree(graphs[[r]])<=-1])
y[r] <- length(get_users(reduced_graphs[[r]]))
reduced_graphs[[r]] <- induced_subgraph(reduced_graphs[[r]], c(sample(get_users(reduced_graphs[[r]]), y[r]^sqrt(4.3/10)), get_movies(reduced_graphs[[r]])))
x[r] <- length(get_movies(reduced_graphs[[r]]))
reduced_graphs[[r]] <- induced_subgraph(reduced_graphs[[r]], c(sample(get_movies(reduced_graphs[[r]]), x[r]^(4.3/10)), get_users(reduced_graphs[[r]])))
reduced_graphs[[r]] <- delete.vertices(reduced_graphs[[r]], V(reduced_graphs[[r]])[degree(reduced_graphs[[r]])==0])
}
这是给我带来问题的代码:
reduced_graph <- igraph::union(reduced_graphs[[1]], reduced_graphs[[2]])
is_weighted(reduced_graph)
[1] FALSE
is_weighted(reduced_graphs[[1]])
[1] TRUE
is_weighted(reduced_graphs[[2]])
[1] TRUE
结果图的顶点也失去了其他属性(如类型和颜色):
V(reduced_graph)$type
NULL
V(reduced_graph)$color
NULL
有人知道如何解决这个问题吗?谢谢!
操作系统:Windows 10 专业版 工作室 igraph 版本:1.2.6
【问题讨论】:
标签: r graph-theory igraph subgraph