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]
.
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'). –
Dziękujemy! Miałem podejrzenie, że tak może być. Uruchomienie mojego skryptu na R x64 2.15.2 działa doskonale. – user1748601
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". –