Проблема создания списков в R для пакета networkD3 - PullRequest
0 голосов
/ 16 февраля 2019

radialNetwork

Я хотел бы создать вышеупомянутую радиальную сеть, используя пакет R networkD3 прочитал руководство здесь , которое использует списки для создания радиальных сетей.К сожалению, мои навыки R со списками отсутствуют.Они на самом деле не существуют.К счастью здесь есть руководство по R4DS .

После прочтения всего, что я придумаю с помощью этого кода ниже, чтобы создать схему выше.

library(networkD3)
nd3 <- list(Start = list(A = list(1, 2, 3), B = "B"))
diagonalNetwork(List = nd3, fontSize = 10, opacity = 0.9)

Увы, моя попытка не удалась,И последующие попытки не дают ничего похожего на диаграмму выше.Я уверен, что это мой список, который не так.Может быть, вы сможете показать мне правильный список, и все начнет обретать смысл.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Если вы похожи на меня, и формат фрейма данных / электронной таблицы легче обернуть вокруг себя, вы можете создать легкий фрейм данных с вашими данными, а затем использовать функции data.tree для преобразования его в формат списка / json...

library(data.tree)
library(networkD3)

source <- c("Start", "Start", "A", "A", "A")
target <- c("A", "B", "1", "2", "3")
df <- data.frame(source, target)

nd3 <- ToListExplicit(FromDataFrameNetwork(df), unname = T)

diagonalNetwork(List = nd3, fontSize = 10, opacity = 0.9)

enter image description here

0 голосов
/ 16 февраля 2019

Джейсон!Проблема здесь в том, что параметр nd3 имеет очень специфическую грамматику имени узла и дочерних элементов.Итак, ваш код должен выглядеть так:

library(networkD3)
nd3 <- list(name = "Start", children = list(list(name = "A",
                                                  children = list(list(name = "1"),
                                                                  list(name = "2"),
                                                                  list(name = "3")
                                                                  )),

                                                 list(name = "B")))
diagonalNetwork(List = nd3, fontSize = 10, opacity = 0.9)
...