Есть ли способ создать случайную сеть с атрибутами?

Итак, я хотел бы сравнить гомофилию со случайной сетью. Это означает, что мне нужно создать случайную сеть с интересующими меня атрибутами. Получить случайную сеть достаточно просто, но я не могу добавить атрибуты, потому что в случайных сетях нет ничего, к чему я мог бы присоединиться...

gr = play_erdos_renyi(6, 0.3)

Attr = sample.int(3, 6, replace = TRUE

gr <- gr %>%
 activate(nodes) %>%
 join(Attr)

Я думаю, что я мог бы сначала сгенерировать случайную сеть, затем добавить ее в список краев, затем добавить атрибуты в список краев, а затем использовать graph_from_data_frame для получения сети, но мне кажется, что должен быть какой-то более простой способ сделать это.


person EBrewe    schedule 12.08.2020    source источник


Ответы (1)


Вы можете просто mutate присвоить атрибуты новому графику.

library(tidygraph)

set.seed(2021)

gr <- play_erdos_renyi(6, 0.3)

Attr <- sample.int(3, 6, replace = TRUE)

gr <- gr %>%
 activate(nodes) %>%
 mutate(attr = Attr)

gr
# # A tbl_graph: 6 nodes and 9 edges
# #
# # A directed simple graph with 1 component
# #
# # Node Data: 6 x 1 (active)
#    attr
#   <int>
# 1     2
# 2     2
# 3     1
# 4     2
# 5     3
# 6     2
# #
# # Edge Data: 9 x 2
#    from    to
#   <int> <int>
# 1     3     1
# 2     5     1
# 3     6     1
# # … with 6 more rows
person Eric Leung    schedule 25.01.2021