13

xこの関係は、次のようなマトリックスとして表されます。

      A    B    C     D
A     0    2    1     1
B     2    0    1     0
C     1    1    0     1
D     1    0    1     0

エントリは、それらが持っている接続の数を参照します。

誰かがそれをエッジリストとして書く方法を教えてもらえますか?

私はそれをエッジリストとして書きたいと思います:

A B
A B
A C
A D
B C

しかし、このエッジ リストでネットワーク プロットを作成できるでしょうか?

4

3 に答える 3

30

igraphパッケージの使用:

x <- matrix(c(0,2,1,1,2,0,1,0,1,1,0,1,1,0,1,0), 4, 4)
rownames(x) <- colnames(x) <- LETTERS[1:4]

library(igraph)
g <- graph.adjacency(x)
get.edgelist(g)

#      [,1] [,2]
#  [1,] "A"  "B" 
#  [2,] "A"  "B" 
#  [3,] "A"  "C" 
#  [4,] "A"  "D" 
#  [5,] "B"  "A" 
#  [6,] "B"  "A" 
#  [7,] "B"  "C" 
#  [8,] "C"  "A" 
#  [9,] "C"  "B" 
# [10,] "C"  "D" 
# [11,] "D"  "A" 
# [12,] "D"  "C"

また、 http://igraph.sourceforge.net/index.htmligraphにあるドキュメントを読むことをお勧めします。これは、最近の質問の多くがすべて単純なケースの使用法であるためです。

(おまけとして、R で関係をプロットする方法plot(g)についての他の質問に回答します。 )

于 2012-11-02T23:10:33.180 に答える
17

を使用meltしてreshape2から、weight==0 を削除します。重量を印刷する必要がない場合。削除するだけです。

x
    sample1 sample2 sample3 sample4
feature1       0       2       1       1
feature2       2       0       1       0
feature3       1       1       0       1
feature4       1       0       1       0

melt(x)
   Var1    Var2 value
1  feature1 sample1     0
2  feature2 sample1     2
3  feature3 sample1     1
4  feature4 sample1     1
5  feature1 sample2     2
于 2014-07-01T00:58:34.940 に答える
0

これを試して

M <- matrix( c(0,2,1,1,2,0,1,0,1,1,0,1,1,0,1,0), 4, 4, dimnames=list(c("A","B","C","D"), c("A","B","C","D")))

eList <- NULL
for ( i in 1:nrow(M) ){
  for ( j in 1:ncol(M)) {
    eList <- c(eList, rep(paste(dimnames(M)[[1]][i], dimnames(M)[[2]][j] ), M[i,j]))
  }
}

出力

> eList
 [1] "A B" "A B" "A C" "A D" "B A" "B A" "B C" "C A" "C B" "C D" "D A" "D C"
于 2012-11-02T23:11:29.060 に答える