2013-01-15 9 views
7

Ich habe ein Beispielcode in R wie folgt:graph.adjacency() verwendet in R

library(igraph) 
rm(list=ls()) 
dat=read.csv(file.choose(),header=TRUE,row.names=1,check.names=T) # read .csv file 
m=as.matrix(dat) 
net=graph.adjacency(adjmatrix=m,mode="undirected",weighted=TRUE,diag=FALSE) 

wo I CSV-Datei als Eingabe verwendet, die folgende Daten enthalten:

23732 23778 23824 23871 58009 58098 58256 
23732 0 8 0 1 0 10 0 
23778 8 0 1 15 0 1 0 
23824 0 1 0 0 0 0 0 
23871 1 15 0 0 1 5 0 
58009 0 0 0 1 0 7 0 
58098 10 1 0 5 7 0 1 
58256 0 0 0 0 0 1 0 

Nach dieser I folgenden Befehl Gewichtswerte verwendet, um zu überprüfen:

E(net)$weight 

Erwartete Ausgabe etwas wie folgt aus:

> E(net)$weight 
[1] 8 1 10 1 15 1 1 5 7 1 

Aber ich seltsame Werte bin immer (und jedes Mal verschieden):

> E(net)$weight 
[1] 2.121996e-314 2.121996e-313 1.697597e-313 1.291034e-57 1.273197e-312 5.092790e-313 2.121996e-314 2.121996e-314 6.320627e-316 2.121996e-314 1.273197e-312 2.121996e-313 
[13] 8.026755e-316 9.734900e-72 1.273197e-312 8.027076e-316 6.320491e-316 8.190221e-316 5.092790e-313 1.968065e-62 6.358638e-316 

ich nicht in der Lage bin zu finden, wo und was ich falsch mache? Bitte helfen Sie mir, das richtige erwartete Ergebnis zu erhalten und auch bitte sagen Sie mir, warum ist diese seltsame Ausgabe und das auch jedes Mal anders, wenn ich es laufe.

Danke, Nitin

Antwort

2

Das Problem scheint aufgrund der Datentyp der Matrixelemente zu sein. graph.adjacency erwartet Elemente des Typs numeric. Nicht sicher, ob es ein Fehler ist.

Nachdem Sie das tun,

m <- as.matrix(dat) 

stellten sie ihren Modus zu numeric von:

mode(m) <- "numeric" 

Und dann tun:

net <- graph.adjacency(m, mode = "undirected", weighted = TRUE, diag = FALSE) 
> E(net)$weight 
[1] 8 1 10 1 15 1 1 5 7 1 
+0

Dank viel Arun. Das hat für mich funktioniert. –

+1

Es ist ein Fehler: https://bugs.launchpad.net/igraph/+bug/1019624 –

6

Nur ein kleinen Arbeitsbeispiel unten, viel klarer als CSV-Eingabe

library('igraph'); 
adjm1<-matrix(sample(0:1,100,replace=TRUE,prob=c(0.9,01)),nc=10); 
g1<-graph.adjacency(adjm1); 
plot(g1) 

enter image description here

P. S. ?graph.adjacency hat viele gute Beispiele (denken Sie daran, library('igraph') zu laufen).

Verwandte Themen

  1. Creating co-occurrence matrix
  2. Co-occurrence matrix using SAC?