2014-02-09 1 views
2

я создал случайный (Эрдош-Рение) граф с р = 0,2 и 10 узлов в R с использованием пакета igraph так:Возвращаясь отдельными вершинами get.shortest.paths() в R

library(igraph) 
graph <- erdos.renyi.game(10, 0.2, type = c("gnp", "gnm"), directed = FALSE, 
    loops = FALSE) 

Я считаю, центральный узел и листовые узлы графа следующим образом:

centralNode <- which(degree(graph) %in% c(max(degree(graph)))) 
leafNodes <- which(degree(graph) %in% c(1)) 

я найти кратчайший путь от центрального узла к первому узлу листа так:

sp <- get.shortest.paths(graph, centralNode, leafNodes[1]) 

И может получить что-то вроде этого (если 1 является centralNode и 4 является leafNodes[1]:

[[1]] 
[1] 1 2 9 4 

Я хочу, чтобы иметь возможность получить доступ к каждому из вершин в кратчайшем пути от centralNode к leafNodes[1].

Я пытался делать это так, но получаю эти ошибки:

sp$2 
    Error: unexpected numeric constant in "sp$2" 
sp$[[1]][2] 
    Error: unexpected '[[' in "sp$[[" 
sp$1[2] 
    Error: unexpected numeric constant in "sp$1" 
sp$[1][2] 
    Error: unexpected '[' in "sp$[" 

Я не знаю, как вернуть каждую вершину по отдельности, или просто выбрать один из них. Я надеюсь в этом есть смысл.

Любая помощь будет высоко оценена. Спасибо

ответ

1

sp является стандартным списком. Таким образом, sp[[1]] и т. Д. Будет работать, чтобы просто получить вектор.

Однако, вероятно, для вас больше смысла подмножать объект графа. Что-то вроде этого:

V(graph)[sp[[1]]] 
+0

Это нормально работает. Большое спасибо за вашу помощь :-) – LoneWolf

+0

Есть ли способ вернуть все пути от одного узла к другому, а не только по кратчайшему пути? – LoneWolf

+0

Не с igraph. См. Http://stackoverflow.com/questions/16668466/all-paths-between-2-vertexes-in-r и http://stackoverflow.com/questions/3971876/all-possible-paths-from-one-node -в-другой-в-направленного-дерево-igraph –

 Смежные вопросы

  • Нет связанных вопросов^_^