Я смотрю на то, как со временем меняются правительственные учреждения.Планируется использовать пакет ndtv для визуализации изменений.Однако я сталкиваюсь с проблемами и понятия не имею, что я делаю неправильно!Я подозреваю, что мои данные не отформатированы правильно.
У меня есть список узлов, в котором перечислены идентификаторы вершин, название агентства, начало узла и конечный узел:
nodelist <- read.csv("https://github.com/aterhorst/data/raw/master/edgelist.csv", header=T, stringsAsFactors = F)
и список ребер, показывающий начало, конецребра:
edgelist <- read.csv("https://github.com/aterhorst/data/raw/master/edgelist.csv", header=T, stringsAsFactors = F)
Я могу довольно легко создать сетевой объект:
library(tidyverse)
library(sna)
nw <- network(edgelist %>% select(head, tail),
vertex_attr = nodelist %>% select(vertex.id, agency),
vertex.attrnames = c("vertex.id", "agency"),
directed = F)
print(nw)
plot(nw)
Теперь я хочу создать динамический сетевой объект:
library(tsna)
library(ndtv)
dn <- networkDynamic(nw,
edge.spells = edgelist,
vertex.spells = nodelist)
ТогдаКолёса отваливаются:
Error in networkDynamic(nw, edge.spells = edgelist, vertex.spells = nodelist) :
vertex.spells requires the vertex.id column to be numeric
Я пытался изменить начало, конец с целого на числовое - без разницы.Я пробовал разные способы создания динамического сетевого объекта, например
dn <- networkDynamic(edge.spells = edgelist)
Это приводит к этой ошибке:
Initializing base.net of size 2020 imputed from maximum vertex id in edge records
Error in activate.edges(base.net, onset = edge.data[, 1], terminus = edge.data[, :
Onset times must precede terminus times in activate.edges.
и:
dn <- networkDynamic(edge.spells = edgelist, vertex.spells = nodelist)
дает мне эту ошибку:
Error in networkDynamic(edge.spells = edgelist, vertex.spells = nodelist) :
vertex.spells requires the vertex.id column to be numeric
Я играл с порядком edge.spell, и это дало положительный результат:
dn <- networkDynamic(net,
edge.spells = edgelist %>% select(onset, terminus, tail, head))
Edge activity in base.net was ignored
Created net.obs.period to describe network
Network observation period info:
Number of observation spells: 1
Maximal time range observed: 2014 until 2020
Temporal mode: continuous
Time unit: unknown
Suggested time increment: NA
Все хорошо.Теперь, когда я добавляю vertex.spell, я получаю эту ошибку:
dynamicNet <- networkDynamic(net,
edge.spells = edgelist %>% select(onset, terminus, tail, head),
vertex.spells = nodelist %>% select(onset, terminus, vertex.id) %>%
mutate(vertex.id = as.numeric(vertex.id)))
Error in networkDynamic(net, edge.spells = edgelist %>% select(onset, :
vertex.spells requires the vertex.id column to be numeric
Что странно, поскольку я явно указал vertex.id как числовой!Очевидно, я где-то разбираюсь с форматированием, но не очевидно где.Любая помощь будет оценена.