Создать граф без ребер из списка узлов с атрибутами в сетевом пакете в r - PullRequest
0 голосов
/ 28 апреля 2020

Можно ли построить в network граф, который содержит только узлы, но не ребра из фрейма данных? Структура данных выглядит следующим образом:

library(statnet)
ID <- as.character(rep(1:10, each = 1, times = 1))
class <- rep(c("class1","class2"), each = 5, times = 1)

unit <- rep(c('unit1', 'unit2'), each = 1, times = 5)

net_data <- as.data.frame(cbind(ID, class, unit)))

ID - это идентификатор узла, а class и unit должны быть атрибутами узла. Я мог бы также работать с решением igraph, но мне любопытно, возможно ли это.

1 Ответ

0 голосов
/ 28 апреля 2020

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

library(statnet)
library(igraph)
library(intergraph)

class <- rep(c("class1","class2"), each = 5, times = 1)
unit <- rep(c('unit1', 'unit2'), each = 1, times = 5)

#create empty graph with igraph
g <- make_empty_graph(n = 10, directed = FALSE)


att_data_frame <- as.data.frame(cbind(class, unit)) 
att_data_frame$class <- as.character(att_data_frame$class)
att_data_frame$unit <- as.character(att_data_frame$unit)

for(cn in colnames(att_data_frame)) {
  g = set_vertex_attr(g, cn,  1:nrow(att_data_frame), value=att_data_frame[,cn])
}

g <- asNetwork(g)


class(g)

...