【发布时间】:2017-09-09 03:50:13
【问题描述】:
我正在尝试使用 igraph 合并 R 中的两个图表。理想情况下,我会从g1 和g2 创建一个顶点联合,只保留g1 的边。该联合应基于label 属性创建。我想我可以在合并之前简单地从g2 中删除所有边缘,使用类似这样的东西:
g2 %>% delete_edges(seq(1, length(E(g2)), by = 1))
不过,当我创建这样的联合时:
g.union <- graph.union(g1, g2, byname=F)
我得到一个带有属性的图表 id_1、id_2、label_1、label_2、weight_1、weight_2... 这不是我想要的。我需要保留g1 中的所有顶点和边,仅添加g2 中g1 中缺少的那些顶点。保留这些添加的顶点的所有属性。
任何帮助表示赞赏!
编辑:
@MrFlick,我不能分享这些图表,但一个简单的例子是这样的:
我有g1
graph
[
directed 1
node
[
id 1
label "it2igcryfm862x"
mydetails "somedetails1"
]
node
[
id 2
label "it0l2xa53eu1w3"
mydetails "somedetails2"
]
node
[
id 3
label "iszyxcopnao380"
mydetails "somedetails3"
]
edge
[
source 1
target 2
weight 1
]
edge
[
source 1
target 3
weight 2
]
edge
[
source 2
target 3
weight 1
]
]
和g2
graph
[
directed 1
node
[
id 1
label "it2igcryfm862x"
mydetails "somedetails1"
]
node
[
id 2
label "it0l2xa53eu1w3"
mydetails "somedetails2"
]
node
[
id 3
label "iszyxcopnao380"
mydetails "somedetails3"
]
node
[
id 4
label "it0lhztmkln4n6"
mydetails "somedetails4"
]
edge
[
source 1
target 2
weight 1
]
edge
[
source 1
target 3
weight 3
]
edge
[
source 2
target 3
weight 2
]
edge
[
source 2
target 4
weight 2
]
edge
[
source 3
target 4
weight 1
]
]
而我需要的是g3
graph
[
directed 1
node
[
id 1
label "it2igcryfm862x"
mydetails "somedetails1"
]
node
[
id 2
label "it0l2xa53eu1w3"
mydetails "somedetails2"
]
node
[
id 3
label "iszyxcopnao380"
mydetails "somedetails3"
]
node
[
id 4
label "it0lhztmkln4n6"
mydetails "somedetails4"
]
edge
[
source 1
target 2
weight 1
]
edge
[
source 1
target 3
weight 2
]
edge
[
source 2
target 3
weight 1
]
]
【问题讨论】:
-
如果您向reproducible example 提供示例输入数据和所需输出,会更容易为您提供帮助。
-
试图提供三个简单的图表,以便更好地了解问题所在。
-
您需要在reproducible format 中提供数据。应该如何在 R 中加载这些数据?