如何合并多个笔迹边缘小节?

时间:2018-11-17 14:52:13

标签: tidyverse tidygraph

我有纵向面板网络数据,当前每个时间点都存储为列表中的邻接矩阵。我想将所有这些都放在一个tbl_graph对象中(带有观察时间的标签),但是我不知道如何从tbl_graph中添加或提取整个边缘点。

我目前首先在tidygraph之外创建边列表,将它们粘合在一起,然后再通过它们,但是我怀疑还有一种更具凝聚力的解决方案。我当前的代码/示例数据如下。

数据:

nets <- list()
for (i in 1:3){
  nets[[i]] <- matrix(sample(c(0,1), 9, replace = T), 3,3)
}

当前解决方法:

for (i in 1:length(nets)){
  ones <- !nets[[i]] %in%  0

  edges <- data.frame(matrix(0, sum(ones), 4))
  edges[, 1] <- row(nets[[i]])[ones]
  edges[, 2] <- col(nets[[i]])[ones]
  edges[, 3] <- nets[[i]][ones]
  edges[, 4] <- i
  nets[[i]] <- edges
}

edges <- do.call(rbind, nets)
colnames(edges) <- c("from", "to", "weight", "time")
nodes <- data.frame(c("1", "2", "3"))
colnames(nodes) <- "name"

mynet <- tbl_graph(nodes= nodes, edges = edges)

我希望直接从下面创建的列表中解决它:

for (i in 1:length(nets)){ 
  tidy.nets[[i]] <- nets[[i]] %>%
  as_tbl_graph() %>% 
  activate(edges) %>%
  mutate(time = i) 
}

0 个答案:

没有答案