我有一个包含693个顶点的图形,另一个包含700个顶点。第二个图形的顶点带有第一个图形中不存在的标签。如何从第二个图中删除多余的顶点。标签的格式为“J68”,“I11”......
答案 0 :(得分:2)
您可以识别哪些顶点位于第一个图形中而不是第二个图形中,然后按如下方式删除它们:
首先让我们创建一些图表。第二个图形将在第一个图形中具有顶点的子集。
library(igraph)
# Create a couple of graphs (based on example in the igraph package help)
graph1 <- make_graph( ~ A-B-C-D-A, E-A:B:C:D, F-G-H-I-F, J-F:G:H:I,
K-L-M-N-K, O-K:L:M:N, P-Q-R-S-P, T-P:Q:R:S, B-F,
E-J, C-I, L-T, O-T, M-S, C-P, C-L, I-L, I-P)
V(graph1)
+ 20/20 vertices, named: [1] A B C D E F G H I J K L M N O P Q R S T
graph2 <- make_graph( ~ F-G-H-I-F, J-F:G:H:I, K-L-M-N-K, O-K:L:M:N,
P-Q-R-S-P, T-P:Q:R:S, L-T, O-T, M-S, I-L, I-P)
V(graph2)
+ 15/15 vertices, named: [1] F G H I J K L M N O P Q R S T
现在,获取要删除的顶点名称。我们想要删除graph1中不在graph2中的顶点:
remove = setdiff(names(V(graph1)), names(V(graph2)))
remove
[1] "A" "B" "C" "D" "E"
graph1 = delete.vertices(graph1, remove)
V(graph1)
+ 15/15 vertices, named: [1] F G H I J K L M N O P Q R S T