gpt4 book ai didi

r - 如何从 r 中的邻接矩阵为节点和边着色?

转载 作者:行者123 更新时间:2023-12-04 15:01:31 25 4
gpt4 key购买 nike

我在文本文件中有两个动态网络的邻接矩阵,R (igraph) 中的周期 1 和 2。我想将第二个网络中新的顶点和边着色为绿色。

例如,第一个网络可能如下所示:

    1   3   6   10  11 
1 NA NA NA NA NA

3 NA NA NA NA NA

6 NA NA NA 8.695652174 13.04347826

10 NA NA 2.586206897 NA 3.448275862

11 NA NA NA 2.919708029 NA

然后更改为第二个网络:
    1   2   3   6   10
1 NA NA NA NA NA

2 NA NA NA NA NA

3 NA NA NA NA NA

6 NA NA NA 12.32091691 8.022922636

10 NA NA 7.228915663 NA NA

在 R 中读取的代码:
t1 <- structure(matrix(c(NA,NA,NA,NA,NA, 
NA,NA,NA,NA,NA,
NA,NA,NA,8.695652174,13.04347826,
NA,NA,2.586206897,NA,3.448275862,
NA,NA,NA,2.919708029,NA),nrow=5, ncol=5, byrow=TRUE),
dimnames=list(c(1,3,6,10,11), c(1,3,6,10,11)))

t2 <- structure(matrix(c(NA,NA,NA,NA,NA,
NA,NA,NA,NA,NA,
NA,NA,NA,NA,NA,
NA,NA,12.32091691,8.022922636,NA,
NA,NA,7.228915663,NA,NA),nrow=5, ncol=5, byrow=TRUE),
dimnames=list(c(1,2,3,6,10), c(1,2,3,6,10)))

t3 <- 结构(矩阵(c(NA,NA,NA,NA,NA,
不适用,不适用,7.2289,不适用,不适用,
NA,10.4798,NA,NA,NA,
不适用,不适用,8.1364,不适用,3.8762,
NA,NA,NA,NA,NA),nrow=5, ncol=5, byrow=TRUE),
dimnames=list(c(1,3,4,6,10), c(1,3,4,6,10)))

如何在 R 中链接这些网络,以便 R 知道哪些顶点是新的?

最佳答案

理想情况下,解决方案是调用 graph.union ,但在当前版本中存在一些错误,因此这是一个解决方法。

您正在使用 NA标记缺失的边缘,这有点奇怪,因为 NA意味着您不知道边缘是否丢失。我会替换NA s 与零。

t1[is.na(t1)] <- 0
t2[is.na(t2)] <- 0

g1 <- graph.adjacency(t1, weighted=TRUE)
g2 <- graph.adjacency(t2, weighted=TRUE)

## Vertices are easy
V(g2)$color <- ifelse(V(g2)$name %in% V(g1)$name, "black", "darkgreen")

## Edges are a bit trickier
el1 <- apply(get.edgelist(g1), 1, paste, collapse="-")
el2 <- apply(get.edgelist(g2), 1, paste, collapse="-")
E(g2)$color <- ifelse(el2 %in% el1, "black", "green")

plot(g2, vertex.label.color="white", vertex.label=V(g2)$name)

enter image description here

关于r - 如何从 r 中的邻接矩阵为节点和边着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13415215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com