在保持节点 name/id 的同时引入子图

Induce a subgraph while keeping nodes' name/id

假设我有这样的图表:

library(igraph)
gtest <- graph(c(1,2,1,3,2,3,3,4), directed = FALSE)

现在,我想要来自 gtest 的导出子图,节点为 1、3、4。当我 运行 以下命令时,似乎正在生成一个新图,有 3 个节点 1、2 和3.

induced.subgraph(graph = gtest,vids = c(1,3,4), impl = "copy_and_delete")

IGRAPH 17d00a4 U--- 3 2 -- 
+ edges from 17d00a4: [1] 1--2 2--3

但是我需要保留节点name/id。有解决办法吗?

您可以在 运行 inducded.graph 之前将 name 属性添加到 gtest,即

gtest <- graph(c(1, 2, 1, 3, 2, 3, 3, 4), directed = FALSE) %>%
  set_vertex_attr(name = "name", value = seq_along(V(.)))

然后

> induced.subgraph(graph = gtest, vids = c(1, 3, 4))
IGRAPH 76ee13e UN-- 3 2 --
+ attr: name (v/n)
+ edges from 76ee13e (vertex names):
[1] 1--3 3--4