2013-04-22 5 views
6

Я не могу понять, почему degree.distribution не работает для меня. Я пробовал R i386 3.0.0 и R x64 3.0.0. Вот простой скрипт для создания графика и показать его распределение:R графа степень.распределение не работает

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 показывает: IGRAPH D--- 10 7 -- (имеет смысл). testD показывает: NULL (почему?). Участок имеет только одно значение в (1,1). Но граф содержит узлы с другими степенями, о чем свидетельствует выход степени (testG), которая равна [1,3,2,4,2,2,0,0,0,0].

+4

Это ошибка: вы можете сообщить об этом автору пакета. Функция использует 'hist', результат которой имел поле' интенсивности ', но был удален в R 3.0.0 (вместо этого можно использовать 'плотность'). –

+0

Спасибо! У меня было подозрение, что это может быть так. Запуск моего скрипта на R x64 2.15.2 работает отлично. – user1748601

+4

Было сообщено и исправлено: https://bugs.launchpad.net/igraph/+bug/1164523 В качестве обходного решения укажите свою собственную функцию 'degree.distribution', очень простое, вы можете скопировать ее из igraph, а затем изменить' интенсивность '' плотность'. –

ответ