Объединение указанных c узлов в один узел, используя значения атрибута в igraph? - PullRequest
0 голосов
/ 28 января 2020

У меня очень большая сеть с тысячами узлов. Каждый узел представляет одно слово, найденное в биографии Твиттера, а края представляют каждое слово, с которым данное слово встречается хотя бы в одной биографии Твиттера. Меня особенно интересуют термины, которые связаны с политическими терминами, но я хочу рассмотреть либеральные термины и консервативные термины отдельно. На данный момент все консервативные термины обозначены красным цветом, а либеральные термины - синим цветом. Неполитические термины выглядят как «серые». Вот что я сделал, чтобы назначить цвета на основе двух столбцов из другого кадра данных, где каждый столбец содержит список либеральных или консервативных терминов.

g = graph_from_adjacency_matrix(as.matrix(cos_new), mode = "undirected", weighted = TRUE, diag = FALSE)

#assign political color as vertex attribute
V(g)$color = "gray"
V(g)$color[V(g)$name %in% politicalterms$liber] = "blue"
V(g)$color[V(g)$name%in% politicalterms$conserv ] = "darkred"

Однако я хотел бы объединить все либеральные (синие) узлы в один узел в сети, и я хотел бы сделать то же самое для консервативных (красных) узлов. Я столкнулся с функцией contract в igraph, но я не понял, как использовать эту функцию, чтобы объединить все красные узлы в один узел, все синие узлы в один узел, оставив все остальные (серые) узлы в сети без объединения.

g_con<-contract.vertices(g, V(g)$color)

Приведенный выше код не работает, но я добавил его, чтобы вы могли видеть, что я хочу сделать. Однако я также не хочу свернуть все узлы с присвоением атрибута цвета V(g)$color. Например, я не хочу, чтобы все узлы, которым назначен «серый», свернулись в один узел, так как все неполитические термины имеют этот цвет. Опять же, я хотел бы, чтобы все консервативные (красные) узлы в сети были объединены в один узел, сохраняя связи с отдельными узлами в сети. Я хотел бы сделать то же самое для либеральных (синих) узлов.

Я пытался включить здесь достаточно информации, чтобы помочь, но я не знаю, имеет ли это смысл. Я пытаюсь прояснить ситуацию, но изо всех сил пытаюсь узнать, что еще нужно включить, чтобы объяснить мою проблему.

...