2013-04-22 14 views
6

Nie mogę zrozumieć, dlaczego degree.distribution nie działa dla mnie. Próbowałem na R i386 3.0.0 i R x64 3.0.0. Oto prosty skrypt, aby wygenerować wykres i pokazać jego dystrybucja:R wykresu stopniowania nie działa

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 pokazuje: IGRAPH D--- 10 7 -- (sens). TestD pokazuje: NULL (dlaczego?). Wykres ma tylko jedną wartość w (1,1). Ale wykres zawiera węzły o innych stopniach, o czym świadczy wynik stopnia (testG), który jest [1,3,2,4,2,2,0,0,0,0].

+4

To jest błąd: możesz zgłosić to autorowi pakietu. Funkcja używa 'hist', której wynik miał pole' intensywności', ale zostało usunięte w R 3.0.0 (zamiast tego można użyć 'density'). –

+0

Dziękujemy! Miałem podejrzenie, że tak może być. Uruchomienie mojego skryptu na R x64 2.15.2 działa doskonale. – user1748601

+4

Zostało już zgłoszone i naprawione: https://bugs.launchpad.net/igraph/+bug/1164523 Jako obejście określ swoją własną funkcję 'degree.distribution', bardzo proste, możesz skopiować ją z igraph, a następnie zmienić' intensywności do "gęstości". –

Odpowiedz

Powiązane problemy