Как добавить конкретные веса для некоторых ребер? - PullRequest
1 голос
/ 10 июля 2019

В сети я нахожу некоторые конкретные узлы, например 3, 4, 5 и начальный узел 9. Я хочу добавить веса к этим ребрам, и мне нужно позвонить в будущем.

Более конкретно: Мне нужно добавить веса к краю: (3,9), (4,9), (5,9).И в последнее время мне нужно вспомнить эти веса, чтобы сделать некоторые вычисления, т.е. мне нужно a="(3,9)'s weights" что-то вроде этого.

1 Ответ

1 голос
/ 10 июля 2019

Поскольку вы не предоставляете никаких данных, я буду использовать простой пример, который содержит ссылки, подобные тем, которые вы описываете.

## A simple example
library(igraph)
set.seed(1234)
g = make_ring(10)
g = add_edges(g, c(3,9,4,9,5,9))
E(g)$weight = 1
LO = layout_nicely(g)
plot(g, layout=LO)

Example graph

Если у вас есть «Начальный узел» и «Определенные узлы», вы можете идентифицировать Специальные края.

## Get the ids of the special edges
InitialNode = 9
ConnectingNodes = c(3,4,5)
ENDS = as.vector(rbind(ConnectingNodes, InitialNode))
SpecialEdges = get.edge.ids(g, ENDS)

С помощью идентификаторов специальных ребер вы можете регулировать их вес.

## Add weight to the special edges
E(g)$weight[SpecialEdges] = c(2,4,6)

## plot to show the weights
plot(g, edge.width=E(g)$weight)

Graph with edge weights

Если вам позже понадобится что-то сделать с весами, вы можете получить доступ к весам, используя:

E(g)$weight[SpecialEdges]
[1] 2 4 6
...