0

igraph で重み付けされたエッジを持つ行列の重み付けされた次数と重み付けされていない次数の分布を取得しようとしています。次のようなgraph.adjacency関数を使用しました

newMatrix<-graph.adjacency(matrix, weighted=NULL, mode="undirected", diag=FALSE) 

しかし、重み付けされた引数では、期待した結果が得られません。たとえば、次の値を持つ 3x3 行列の場合:

    [,1][,2][,3]
[1,]  1   2   2
[2,]  2   2   0
[3,]  2   0   3

引数 weighted=NULL および diag=FALSE を使用すると、次のような隣接行列が期待されます。

    [,1][,2][,3]
[1,]  .   1   1
[2,]  1   .   .
[3,]  1   .   .

したがって、重み付けされていないエッジ ベクトルの次数分布は次数 (2,1,1) になります。それにもかかわらず、関数は加重行列を返しています。返される隣接行列は次のとおりです。

    [,1][,2][,3]
[1,]  .   2   2
[2,]  2   .   .
[3,]  2   .   .

加重引数を TRUE に、de モードを最小、最大に変更しようとしましたが、結果は常に加重行列を返します。

4

1 に答える 1

0

weight=NULLmode=undirectedの場合graph.adjacency、(対称) 隣接行列の i,j エントリを i,j 間のエッジの数として解釈します。この解釈は、パラメーターを変更することで変更できmodeます (ドキュメントを参照してください)。

各エッジを1回だけカウントするには(これがやりたいことのようです)、入力行列を再スケーリングできます

m <- matrix(c(1,2,2,2,2,0,2,0,3),nrow=3,ncol=3,byrow=TRUE)
mscaled <-ifelse(m>=1,1,0)
newMatrix<-graph.adjacency(mscaled, weighted=NULL, mode="undirected", diag=FALSE) 
于 2013-10-28T18:29:12.990 に答える