Получить граф из всех вершин с падающими ребрами R igraph - PullRequest
1 голос
/ 03 мая 2020

Я хотел бы получить подграф из графа, состоящего из всех вершин с падающими ребрами, начиная с некоторых вершин и следуя за ребрами, пока не будет больше падающих ребер. С помощью следующего кода я получаю только первых соседей

g <-   graph_from_literal( 1 -+ 4 -+ 5 -+ 8,2 -+ 5 , 3-+6-+7,  4+-3, 4-+8, 5 -+9, simplify = FALSE)
adjacent_vertices(g, V(g)[c("7","9")], mode="in")

Я знаю, что должен сделать что-то вроде l oop, но adjacent_vertices возвращает список, и я не могу понять, как его создать .

Для этого примера результат должен быть

graph_from_literal( 1 -+ 4 -+ 5 ,2 -+ 5 , 3-+6-+7,  4+-3, 5 -+9, simplify = FALSE)

1 Ответ

1 голос
/ 05 мая 2020

make_ego_graph может использоваться для поиска подграфов в окрестности указанных c узлов. Вы можете осуществлять поиск по всему графику, установив параметр order в функции make_ego_graph.

Пример

library(igraph)

# Your graph
g = graph_from_literal( 1 -+ 4 -+ 5 -+ 8, 2 -+ 5 , 3-+6-+7, 4+-3, 4-+8, 5 -+9, 
                        simplify = FALSE)

# Set the order equal to the number of nodes in the graph    
sg = make_ego_graph(g, nodes = V(g)[c("7","9")], order=length(V(g)), mode="in")

# This returns two subgraphs as node 3 has no inward edges and so the graph 3->6->7 
# is unconnected to the other nodes. You can join the subgraphs by using 
do.call(union, sg)
...