Как устранить ошибку undefined columns для Sankey в R?

#r #sankey-diagram #htmlwidgets #networkd3

#r #sankey-диаграмма #htmlwidgets #networkd3

Вопрос:

Я строю диаграмму sankey, используя networkD3 в R, но я получаю сообщение об ошибке:

 Error in `[.data.frame`(Links, , Source) : undefined columns selected
  

Код, который у меня есть, следующий:

 library(networkD3)
library(magrittr)

# Data Sources
file <- c("M://R//SankeyDataACT.csv")
links <- read.csv(file, sep =",", header = TRUE)
file <- c("M://R//SankeyNodes.csv")
nodes <- read.csv(file, sep =",", header = TRUE)
sankeyData <- list(nodes=nodes, links=links)

# Sankeydiagram
sankeyNetwork(Links = sankeyData$links, 
              Nodes = sankeyData$nodes, 
              Source = "Source",
              Target = "Target", 
              Value = "Value", 
              NodeID = "Name",
              units = "$", 
              fontSize = 12, 
              nodeWidth = 30)
  

Когда я запускаю приведенный выше код, я получаю сообщение об ошибке. Я не вижу, в чем проблема.

Смотрите ниже данные, которые у меня есть

Источник:

 links[,1]
 [1] 0 0 0 1 1 1 2 2 2 2 3 3 3 3 4 4 5 5 5 5 6 6 6 6 6
  

Цель:

 links[,2]
 [1]  7  8  9  7  8 10  7  9  8 10  9  7  8 10  7  8 10  8  7  9 11  8  7  9 10
  

Значение:

 links[,3]
 [1]   4   8   6   6   2   4  12  12  23  12 148 260 285   3   2   1  67 117 177  34  28  67  20  21   1
  

Узлы:

 nodes[,1]
 [1] ATT BHL CTL MEX MTL SSL TLS CEE SWE NWE MEA MF  OEM
Levels: ATT BHL CEE CTL MEA MEX MF MTL NWE OEM SSL SWE TLS
  

Комментарии:

1. Можем ли мы иметь head of sankeyData ?

Ответ №1:

Имена столбцов, которые вы задаете в sankeyNetwork функции (т.Е. Source = "Source", Target = "Target", Value = "Value", NodeID = "Name" ), отсутствуют в ваших данных. Вы можете задать правильные имена столбцов в аргументах функций или вы могли бы переименовать столбцы в ваших данных, чтобы они соответствовали аргументам, вот так…

 names(sankeyData$nodes)[1] <- "Name"
names(sankeyData$links)[1:3] <- c("Source", "Target", "Value")

sankeyNetwork(Links = sankeyData$links, 
              Nodes = sankeyData$nodes, 
              Source = "Source",
              Target = "Target", 
              Value = "Value", 
              NodeID = "Name",
              units = "$", 
              fontSize = 12, 
              nodeWidth = 30)