2017-12-04 6 views
1

unsquare行列のために行列にヘッダとして最初の列を読む:私はこれでデータを読み取ることができ、グラフ でネットワークを作成するために、隣接行列を読み込むしようとしています

Matrix_One <- read.csv("Network Matrix.csv", header=TRUE) 
Matrix <- as.matrix(Matrix_One) 
first_network <- graph.adjacency(Matrix, mode= "directed", weighted=NULL) 

しかし、これはしていません

graph.adjacency.dense(adjmatrix、モード=モード、加重=加重、中にエラー: structure_generators.c時:273:非最初の列を認める私はこの警告メッセージが出ていて、ヘッダーがあります正方行列、非正方行列

Rにヘッダーとしてcolumn1を読み込ませる方法はありますか?

+0

あなたのcsvファイルの最初の3行と 'head(Matrix)'と 'dim(Matrix)'を表示してください – G5W

+0

残念ですが、最初の行はヘッダーとして読み込まれますが、最初の列は読み込まれません。 –

+0

"非正方行列"とは、その幅と異なる高さを持つ行列を指します。 'nrow(Matrix)'幅 'ncol(Matrix)'を比較して、最初の列(おそらく垂直ヘッダを含んでいる)があなたの行列を背の高さよりも広げている様子を見てください。 – nJGL

答えて

0

あなたはこのようなあなたの行列の最初の列を削除したいと思います:

Matrix <- as.matrix(Matrix_One)[,-1]

あなたの隣接行列の値が数値であれば、取得する代わりにas.matrix()data.matrix()を使用することをお勧めかもしれませんあなたのマトリックスの文字列ではなく数値です。隣接行列の値は、しばしば数値として与えられる各エッジ重みに対応する重みである。 Rは、この検討し、使用可能な隣接行列としてデータを読むために取得するには

# Assuming your csv file is like this... 
csv <- "X,A,B,C,B,E 
     A,0,0,1,0,1 
     B,1,0,0,0,0 
     C,1,1,0,0,0 
     D,1,0,0,0,0 
     E,0,0,0,0,0" 
# ... with first row and column indicating node name in your network. 

# To keep names, we could keep the header and use it as a list of nodes: 
Matrix_One <- read.csv2("Network Matrix.csv", sep=",", header=TRUE) 
Nodelist <- names(Matrix_One)[-1] 

# The matrix should include the first row (which is data), 
# but not the first column (which too contains node-names) of the df: 
Matrix <- data.matrix(Matrix_One)[,-1] 
# As the matrix is now of the size N by N, row- and colnames makes for a neat matrix: 
rownames(Matrix) <- colnames(Matrix) <- Nodelist 

# Look at it 
Matrix 

# Use igraph to make a graph-object and visualize it 
library(igraph) 
g <- graph_from_adjacency_matrix(Matrix, mode="directed", weighted=NULL) 
plot(g) 

パッケージ時代遅れ(と私は信じてCRANから削除)されます。上記の例では、代わりにigrpahを使用しています。これは、包括的なネットワークデータ管理パッケージで、優れた視覚化機能を備えています。

enter image description here

あなたはに固執することを選択した場合、あなたはfirst_network <- graph.adjacency(Matrix, mode= "directed", weighted=NULL)のような四角いすぎMatrixを取る:上記のコードの結果は次のようなものになります。

関連する問題