Причина в том, что в конечном итоге данные отправляются в JavaScript / D3, который использует индексацию на основе 0 ... что означает индекс первого элемента вектора / массива / и т. Д.равно 0
... в отличие от R, где индекс первого элемента вектора равен 1
.
как пример простого преобразования данных в стиле R ...
source <- c("A", "A", "B", "C", "D", "D", "E", "E")
target <- c("D", "E", "E", "D", "H", "I", "I", "H")
nodes <- data.frame(name = unique(c(source, target)))
links <- data.frame(source = match(source, nodes$name) - 1,
target = match(target, nodes$name) - 1,
value = 1)
library(networkD3)
sankeyNetwork(links, nodes, "source", "target", "value", "name")