2013-04-22 5 views
6

Non riesco a capire perché degree.distribution non funziona per me. Ho provato su R i386 3.0.0 e R x64 3.0.0. Ecco la semplice script per generare un grafico e mostrare la sua distribuzione:R grafico gradi.distribuzione non funziona

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 mostra: IGRAPH D--- 10 7 -- (ha un senso). testD show: NULL (perché?). Il grafico ha un solo valore a (1,1). Ma il grafico contiene nodi con altri gradi, come evidenziato dall'output di degree (testG), che è [1,3,2,4,2,2,0,0,0,0].

+4

Questo è un bug: è possibile segnalarlo all'autore del pacchetto. La funzione usa 'hist', il cui risultato ha usato un campo' intensità ', ma è stato rimosso in R 3.0.0 (si può usare invece 'density'). –

+0

Grazie! Avevo il sospetto che potesse essere il caso. L'esecuzione del mio script su R x64 2.15.2 funziona perfettamente. – user1748601

+4

Era già stato segnalato e corretto: https://bugs.launchpad.net/igraph/+bug/1164523 Come soluzione temporanea definire la propria funzione 'degree.distribution', molto semplice, è possibile copiarla da igraph e quindi cambiare' intensità 'a 'densità'. –

risposta