按iGraph(R)中的属性/组合并边
给出下图,我想用$name组合一些边。但是,通过基于图形所连接的顶点进行合并,而不是通过特定标签(在本例中为$name)对图形进行分组,可以很容易地简化图形按iGraph(R)中的属性/组合并边,r,igraph,graph-theory,R,Igraph,Graph Theory,给出下图,我想用$name组合一些边。但是,通过基于图形所连接的顶点进行合并,而不是通过特定标签(在本例中为$name)对图形进行分组,可以很容易地简化图形 g <- graph(c(1,2, 1,2, 1,2, 2,3, 3,4)) E(g)$weight <- 1:5 E(g)$name <- c("A", "A", "B", "C", "D") g您可以通过转换为数据帧,然后再转换回图形来实现这一点: library(dplyr) df <- igraph::as
g <- graph(c(1,2, 1,2, 1,2, 2,3, 3,4))
E(g)$weight <- 1:5
E(g)$name <- c("A", "A", "B", "C", "D")
g您可以通过转换为数据帧,然后再转换回图形来实现这一点:
library(dplyr)
df <- igraph::as_data_frame(g)
df <- df %>% group_by(name) %>% mutate(weight = sum(weight)) %>% unique()
df
# A tibble: 4 x 4
# Groups: name [4]
from to weight name
<dbl> <dbl> <int> <chr>
1 1.00 2.00 3 A
2 1.00 2.00 3 B
3 2.00 3.00 4 C
4 3.00 4.00 5 D
g2 <- igraph::graph_from_data_frame(df)
你回复的时候我正在编辑我的评论。确切地说,我目前有,但我并不觉得它是最优的,因为它需要额外的计算。当处理8M行和40个变量的大数据帧时,它可能会变得复杂。不用担心。但举个例子,在我的一个样本数据帧上,计算时间几乎是原来的三倍。不可怕,但可能会更好。我想这是一个可以完美地包含在iGraph中的功能,因为它应该不难实现。它看起来改变权重然后对图进行子集化要快一些。您可以查看在大型数据集上的速度是否更快,或者这是一个小样本。