Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按iGraph(R)中的属性/组合并边_R_Igraph_Graph Theory - Fatal编程技术网

按iGraph(R)中的属性/组合并边

按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

给出下图,我想用$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_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中的功能,因为它应该不难实现。它看起来改变权重然后对图进行子集化要快一些。您可以查看在大型数据集上的速度是否更快,或者这是一个小样本。