2017-01-05 11 views
1

The output Ich habe Probleme beim Lesen eines ungerichteten Graphen in R, ich habe versucht, es in R aus einer Textdatei "graph.txt" zu importieren, die eine große Anzahl von Kanten enthält (etwa 1000) aber das Problem:Importieren eines ungerichteten Graphen in R aus Textdatei

R liest nicht das ganze Diagramm aus der Textdatei und es wird eine große Anzahl der Kanten weggelassen Ich folgte den Schritten, die ich in Tutorials für R und die damit verbundenen vorherigen Fragen in diesem gefunden habe Website, aber ich konnte es nicht ändern.

Die graph.txt wie folgt aussieht:

383 886 
777 915 
793 335 
386 492 
649 421 
362 27 
690 59 
763 926 
540 426 
172 736 
211 368 
567 429 
782 530 

und die Funktionen, die ich verwendet:

library("igraph") 
dd<-scan("graph.txt") 
gg<-read_graph("graph.txt",directed=FALSE) 
gg 

das Ergebnis wie folgt aussieht:

... 763-- 785 326-- 984 946-- 946 326--1103 326-- 592 698--1636 326--1807 
+ ... omitted several edges 

Jede Hilfe bitte R importieren lassen die gesamte Anzahl der Kanten aus der TXT-Datei

Vielen Dank im Voraus

PS: Ich versuche, Daten als Graph nur zu importieren (keine Tabelle oder Matrix) den Durchmesser für die Grafik mit der Funktion zu berechnen:

diameter(graph, directed = FALSE, weights = NULL) 
+0

Können Sie bitte ein Beispiel für Ihre Eingabe TXT-Datei zeigen. – user20650

+0

@ user20650 danke für die Antwort. Sie können in der Bearbeitung sehen, wie die TXT-Datei aussieht wie – Noah16

+0

danke, und die Werte repräsentieren Knotenbeschriftungen und die Spalten von (col one) und bis (col two) [dh von - bis]. Warum möchten Sie es nicht zuerst einlesen, da es in R einfach wäre, es als data.frame ('? Read.table') einzulesen und dann das Diagramm ('? Graph_from_data_frame') – user20650

Antwort

0

Was ich in der Regel tun Importieren Sie zuerst die Datei und konvertieren Sie sie dann in ein Diagramm, um sicher zu gehen. So

library(igraph) 
f <- read.table(file = "graph.txt") 
edges <- c() 
for (e in 1:dim(f)[1]){ 
    edges <- append(edges, c(f[e, 1], f[e, 2])) 
} 
g <- graph(edges, directed = FALSE) 
g 
#IGRAPH U--- 926 13 -- 
#+ edges: 
#[1] 383--886 777--915 335--793 386--492 421--649 27--362 59--690 763--926 426--540 172--736 
#[11] 211--368 429--567 530--782 
Verwandte Themen