2014-02-12 1 views
2

Когда я устал писать график в файл, выходной файл не сохраняет имена вершин. Вот код:Запись графика в файл не поддерживает имена вершин

edgelist = read.csv("test.csv",header=FALSE,sep=",") 
g = graph.edgelist(as.matrix(edgelist),directed=FALSE) 
V(graph)$name <- V(graph) 
graph <- delete.vertices(graph, which(degree(graph) < 1)) 
write.graph(g, "temp.txt", "edgelist") 

test.csv:

1,11 
1,22 
2,11 
2,33 
3,22 
3,33 
4,44 

temp.csv:

0 4 
0 5 
1 4 
1 6 
2 5 
2 6 
3 7 
+0

Формат «edgelist» не использует имена вершин. Используйте другой формат или напишите его вручную, то есть запросите имя, используя 'get.edgelist', а затем используйте' write'. –

ответ

2

Формат "edgelist" всегда числовой, поэтому он не использует вершину имена. Если вы хотите, чтобы имена использовали другой формат, например. ncol:

g <- graph.formula(a-b-c) 
write.graph(g, format="ncol", file="test.ncol") 

g2 <- read.graph("test.ncol", format="ncol") 
str(g2) 
# IGRAPH UN-- 3 2 -- 
# + attr: name (v/c) 
# + edges (vertex names): 
# [1] a--b b--c 

КПП. когда вы делаете

V(graph)$name <- V(graph) 

, который не является лучшим, потому что многие функции igraph предполагают, что имена вершинных символы и V(graph) числовые. Так делают

V(graph)$name <- as.character(V(graph)) 

вместо этого.

+0

Спасибо за ваш код. Я попробовал это на данных, приведенных в приведенном выше примере, и получил: На rinterface.c: 1225: Атрибут не является символом, Недопустимое значение Что со мной работает - это формат «graphml», похоже, что он считает имя узла , –

+1

См. Мои правки, 'V (g) $ name' не является символом типа, что иногда вызывает проблемы. –

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

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