6

テキストファイルには動的ネットワークの2つの隣接行列があり、R(igraph)には期間1と2があります。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

次に、この2番目のネットワークに変更します。

    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、NA、NA、7.2289、NA、NA、NA、10.4798、NA、NA、NA、NA、NA、8.1364、NA、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がどの頂点が新しいかを知るにはどうすればよいですか?

4

1 に答える 1

7

理想的には、を呼び出すことで解決できますがgraph.union、現在のバージョンにはいくつかのバグがあるため、回避策を次に示します。

エッジが欠落しているかどうかわからないことを意味するため、欠落しているエッジをマークするために使用NAしています。これは少し奇妙です。sをゼロNAに置き換えます。NA

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)

ここに画像の説明を入力してください

于 2012-11-16T15:08:04.280 に答える