Вы можете использовать simpleNetwork
напрямую следующим образом: simpleNetwork(networkData)
Если вы хотите использовать forceNetwork
, на странице справки сказано, что фрейм данных Nodes
является фреймом данных, содержащим узелid и свойства узлов. Если идентификатор не указан, узлы должны быть в том же порядке, что и столбец переменной источника во фрейме данных Links. В настоящее время разрешена только группирующая переменная. ", поэтому он должен выглядеть примерно так...
# names group
# 1 Dizzy Gillespie Trumpet
# 2 Louis Armstrong Trumpet
# 3 Max Roach Drums
# 4 Charlie Parker Saxophone
# 5 Chet Baker Trumpet
# 6 Peter Erskine Drums
# 7 John Coltrane Saxophone
# 8 Wayne Shorter Saxophone
, который вы можете создать из своего networkData
фрейма данных следующим образом ...
col_names <- c("name", "group")
nodes <- rbind(setNames(networkData[c(1, 3)], col_names),
setNames(networkData[c(2, 3)], col_names))
nodes <- unique(nodes)
На странице справки сказано, что фрейм данных Links
являетсяобъект фрейма данных со ссылками между узлами. Он должен включать источник и цель для каждой ссылки. Они должны быть пронумерованы, начиная с 0. Можно указать необязательную переменную Value, чтобы указать, насколько узлы находятся близко друг к другу. ", поэтомуэто должно выглядеть примерно так ...
# src target
# 1 0 4
# 2 1 4
# 3 2 5
# 4 3 6
# 5 3 7
, который вы затем можете создать, используя свой фрейм данных networkData
и фрейм данных nodes
, созданный выше, как этот ...
networkData$src <- match(networkData$src, nodes$name) - 1
networkData$target <- match(networkData$target, nodes$name) - 1
networkData$group <- NULL
затем вы передаете их forceNetwork
и сообщаете им имена столбцов в ваших фреймах данных следующим образом ...
forceNetwork(Links = networkData, Nodes = nodes, Source = "src",
Target = "target", NodeID = "name", Group = "group")