Столбцы / переменные source
и target
во фрейме данных links
должны быть нумерацией c, где каждое значение - это индекс (0-индексированный, а не 1-индексированный, как обычно в R) узел, на который он ссылается во фрейме данных nodes
.
Так, например, в первом примере ...
head(Energy$links)
#> source target value
#> 1 0 1 124.729
#> 2 1 2 0.597
#> 3 1 3 26.862
#> 4 1 4 280.322
#> 5 1 5 81.144
#> 6 6 2 35.000
head(Energy$nodes)
#> name
#> 1 Agricultural 'waste'
#> 2 Bio-conversion
#> 3 Liquid
#> 4 Losses
#> 5 Solid
#> 6 Gas
первая ссылка идет от 0 (строка 0 в nodes
фрейм данных, который является узлом с именем «Сельскохозяйственные отходы») к 1 (строка 1 nodes
фрейма данных, который является узлом с именем «Био-преобразование»)
Итак, для второго примера Вы могли бы достичь этого с ...
name<-c("J","B","A")
nodes3<-data.frame(name)
source<-c("B","B","J")
target<-c("A","A","B")
value<-c(5,6,7)
links3<-data.frame(source,target,value)
links3$source_id <- match(links3$source, nodes3$name) - 1
links3$target_id <- match(links3$target, nodes3$name) - 1
library(networkD3)
sankeyNetwork(Links = links3, Nodes = nodes3,
Source = "source_id", Target = "target_id", Value = "value",
NodeID = "name", units = "cases", fontSize = 12, nodeWidth = 30)