Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
当节点具有圆形连接时,IGRAPHE保持具有最高权重的边_R_Igraph - Fatal编程技术网

当节点具有圆形连接时,IGRAPHE保持具有最高权重的边

当节点具有圆形连接时,IGRAPHE保持具有最高权重的边,r,igraph,R,Igraph,我有一个更大的图,就像下面链接中的图一样,其中一些节点具有不同权重的传入和传出边。恐怕我正在努力寻找一种方法来识别要去除的边缘 任何帮助都将不胜感激 library(igraph) set.seed(100) g <- graph_from_data_frame(data.frame(v_1 = c(1,2,1,3, 1, 3), v_2 = c(2,1,3,1, 4, 4)), directed = TRUE) E(g)$weights <- c(1, 3, 3, 1, 1,

我有一个更大的图,就像下面链接中的图一样,其中一些节点具有不同权重的传入和传出边。恐怕我正在努力寻找一种方法来识别要去除的边缘

任何帮助都将不胜感激

library(igraph)
set.seed(100)

g <- graph_from_data_frame(data.frame(v_1 = c(1,2,1,3, 1, 3), v_2 = c(2,1,3,1, 4, 4)), directed = TRUE)

E(g)$weights <- c(1, 3, 3, 1, 1, 3)

plot.igraph(g, edge.width=E(g)$weights, edge.curved = 0.3)
库(igraph)
种子集(100)

回答你自己的问题有点厚颜无耻,但非常感谢ANG的评论让我的大脑运转起来

我已经为此挣扎了一段时间,但这里有一个在我的场景中有效的解决方案。希望它能帮助有类似问题的人

library(igraph)
set.seed(100)

df <- data.frame(v_1 = c(1,2,1,3, 1, 3), v_2 = c(2,1,3,1, 4, 4))
df$weights <- c(1, 3, 3, 1, 1, 3)

#Order the vertex IDs so that an edge between 1-2 and 2-1 both become 1-2, then collapse them together so they're in 1 column that can be used to identify the duplicate.
df$ordered_verticies <- apply(df[1:2], 1, FUN = function(x) paste0(sort(x), collapse = ""))

#order by vertice, then negative weight for a decending order
df <- df[order(df$ordered_verticies, -df$weights),]

#removing duplications now gets rid of the the second (and lower weighted) instance of an edge
df <- df[!duplicated(df$ordered_verticies),]

#new graph
g <- graph_from_data_frame(df[1:2], directed = TRUE)
E(g)$weights <- df[,3]
plot.igraph(g, edge.width=E(g)$weights, edge.curved = 0.3)
库(igraph)
种子集(100)

df
delete.edges()
可以在这里提供帮助。另一个选择是在graphThank you ANG让我的想法变得足够不同以找到解决方案之前处理数据(根据边权重使其无方向化)!没有比自己找到答案更好的学习方法了!谢谢分享:)