2014-02-13 1 views
0

В R Я пытаюсь сопоставить все станции метро Мадрида, используя igraph, а затем рассчитать кратчайший маршрут между двумя станциями (только количество станций, а не расстояние). Я следую этому синтаксису: «Неориентированный граф с двумя вершинами, называемыми« A »и« B », и только один край: graph.formula (A-B)»Чтение ненаправленных связей графа (AB) в R и переименование вершин с помощью igraph

Ниже я просто скопирую две трубные линии для большей ясности.

library("igraph") 
metro<- graph.formula(PinardeChamartin-Bambu-Chamartin-PlazadeCastilla-Valdeacederas-Tetuan-Estrecho-Alvarado-CuatroCaminos-RiosRosas-Iglesia-Bilbao-Tribunal-GranVia-Sol-TirsodeMolina-AntonMartin-Atocha-AtochaRenfe-MenendezPelayo-Pacifico-PuentedeVallecas-NuevaNumancia-Portazgo,LasRosas-AvenidadeGuadalajara-Alsacia-LaAlmudena-LaElipa-Ventas-ManuelBecerra-Goya-PrincipedeVergara-Retiro-BancodeEspana-Sevilla-Sol-Opera-SantoDomingo-Noviciado-SanBernardo-Quevedo-Canal-CuatroCaminos) 
sp <- get.shortest.paths(metro,from="Canal",to="Chamartin") 
V(metro)[sp[[1]]] 

Это похоже на работу, но у меня есть два вопроса:
1. Как вход на станцию ​​метро (узлы) и их отношения A-B для длинных списков в график более эффективен, чтение CSV к примеру?

2. Как я могу переименовать эти узлы, чтобы включить тильды, пробелы и «-»? Поскольку я пробовал двойные кавычки до и после имени каждого узла, но получаю сообщение об ошибке. Знак +. Я много раз проверял длинную строку, и я не вижу ошибки, никаких скобок не хватает.
Извините, если у них очень простые вопросы. Я очень начинающий пользователь.
Большое спасибо

+0

Существует всеобъемлющее руководство по использованию igraph в R здесь: http://igraph.wikidot.com/r-tutorial. Он содержит подробный раздел о чтении и хранении данных, что возможно в нескольких форматах. Тильда над буквами является вопросом кодирования и должна обрабатываться при хранении и загрузке данных. – Zbynek

+0

Учебник, связанный с ним, заброшен и устарел, к сожалению. Может быть полезно, но вам также нужно прочитать текущую документацию. –

ответ

1

Для первого вопроса см. ?graph.data.frame и ?read.csv.

Я не совсем уверен, что вы спрашиваете во втором вопросе, какова ошибка, которую вы получаете. Ваш код отлично работает для меня, с модификацией, необходимой для igraph 0.7.x:

V(metro)[sp$vpath[[1]]] 
# Vertex sequence: 
# [1] "Canal"   "CuatroCaminos" "Alvarado"  "Estrecho"  
# [5] "Tetuan"   "Valdeacederas" "PlazadeCastilla" "Chamartin"  
+0

Извините, что если вместо этих имен я использую – mpalanco

+0

Извините, что я имел в виду, что если я использую graph.formula («Pinar de Chamartin» - «Bambú» - «Chamartín» ... и т. Д.), Чтобы включить специальные символы, я получаю сообщение об ошибке когда я вхожу во всю сеть. Строка 5.000 символов. Символ + появляется, когда вы оставляете открывающуюся скобку. Могу ли я переименовать эти вершины для включения этих специальных символов? Кстати, с моим исходным кодом, я получаю ошибку «неверное индексирование вершины seq» дома. Я не знаю, почему (вершина нуля?) – mpalanco

+0

Затем, пожалуйста, укажите код, который не работает. –

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

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