2013-04-22 9 views
6

Ich kann nicht herausfinden, warum degree.distribution nicht funktioniert für mich. Ich habe R i386 3.0.0 und R x64 3.0.0 versucht. Hier ist die einfache Skript ein Diagramm und zeigt die Verteilung zu erzeugen:R graph grad.distribution funktioniert nicht

library(igraph) 

testG = graph.empty(n=10, directed=TRUE) 
for(row in 1 : 5) { 
    src = row 
    dest = row + 1 
    testG = add.edges(testG, rbind(src, as.numeric(dest))) 
    if(row %% 2 == 0) { 
     dest = row + 2 
     testG = add.edges(testG, rbind(src, as.numeric(dest))) 
    } 
} 
testG 

testD = degree.distribution(testG, v=V(testG), cumulative=FALSE) 
testD 
plot(1 : length(testD), testD, "h", main="Website Graph Degree Distribution", xlab="Degree", ylab="Probability of Degree") 
degree(testG) 

testG zeigt: IGRAPH D--- 10 7 -- (sinnvoll). testD zeigt: NULL (warum?). Die Handlung ist mit nur einem Wert bei (1,1). Aber das Diagramm enthält Knoten mit anderen Graden, wie die Ausgabe von Grad (testG) zeigt, nämlich [1,3,2,4,2,2,0,0,0,0].

+4

Das ist ein Fehler: Sie können es dem Paketautor melden. Die Funktion verwendet 'hist', deren Ergebnis früher ein 'intensities'-Feld hatte, aber in R 3.0.0 wurde entfernt (man kann stattdessen' density' verwenden). –

+0

Danke! Ich hatte den Verdacht, dass dies der Fall sein könnte. Das Ausführen meines Skripts auf R x64 2.15.2 funktioniert einwandfrei. – user1748601

+4

Wurde bereits gemeldet und behoben: https://bugs.launchpad.net/igraph/+bug/1164523 Als Workaround definieren Sie Ihre eigene 'degree.distribution' Funktion, sehr einfach, Sie können es aus dem ifigraph kopieren und dann' ändern Intensitäten zu "Dichte". –

Antwort