2013-11-27 3 views
1

Мне нужно создать экземпляр узла с помощью R, но мне нужно некоторые атрибуты узла существует:Создание сети с помощью R

  1. сколько соединений/связывает узел имеет (т.е. сколько у соседей есть)
  2. что эти соединения (например, если узел равен 1 и подключен к узлу 2, он должен быть атрибутом)
  3. необходимо установить значение для узла (0 или 1)

Также, как использовать петлю для создания большего количества экземпляров этого узла, но с разными значениями для тех же атрибутов.

Я потратил часы на поиск решения и попробовал много пакетов, но всегда есть проблема.

Может ли кто-нибудь предложить решение, пожалуйста, и предоставить полный пример, насколько это возможно?

Большое спасибо заранее.

+1

Что вы хотите достичь этой сетью? Вероятно, вы можете представить структуру данных, которую вы описываете как data.frame. – unique2

+0

Я хочу создать симплексную случайную сеть, состоящую из множества узлов, соединенных вместе. – LoneWolf

+0

Да, но что вы хотите с этим делать? Какие типы анализов вы хотите применить? – unique2

ответ

3

Использование библиотеки igraph может здесь хорошо работать. например:

Сделать data.frame, содержащие отношения между узлами

node.data <- data.frame(
    one=c("a","a","b"), 
    two=c("b","c","c") 
) 

Сделать график/сеть из данных

g <- graph.data.frame(
    node.data, 
    directed=FALSE # make this true if your network has a direction in the links 
) 
plot(g) 

enter image description here

Добавить значения в каждую вершину (узел)

g <- set.vertex.attribute(g,"value",value=c(1,0,0)) 

Они могут быть получены, как, например:

get.vertex.attribute(g,"value") 
#[1] 1 0 0 

Чтобы адаптировать это к генерироваться случайным образом сети, вы можете использовать функции sample.

E.g. используя что-то вроде ...

one=sample(letters[1:10],100,replace=TRUE) 

... внутри data.frame вызова позволит случайным образом генерировать ссылки. То же самое можно было бы применить для генерации атрибутов вершин, таких как ...

sample(0:1,100,replace=TRUE) 
+0

@ user3043867: при всем том, что поможет с thelatemail, пожалуйста, не забудьте подтвердить свой ответ и принять его, нажав на галочку слева. – flodel

Смежные вопросы