2013-01-15 10 views
7

Ho un codice di esempio in R come segue:utilizzando graph.adjacency() in R

library(igraph) 
rm(list=ls()) 
dat=read.csv(file.choose(),header=TRUE,row.names=1,check.names=T) # read .csv file 
m=as.matrix(dat) 
net=graph.adjacency(adjmatrix=m,mode="undirected",weighted=TRUE,diag=FALSE) 

dove io csv come input che contengono seguenti dati:

23732 23778 23824 23871 58009 58098 58256 
23732 0 8 0 1 0 10 0 
23778 8 0 1 15 0 1 0 
23824 0 1 0 0 0 0 0 
23871 1 15 0 0 1 5 0 
58009 0 0 0 1 0 7 0 
58098 10 1 0 5 7 0 1 
58256 0 0 0 0 0 1 0 

Dopo di ciò utilizzare secondo comando per controllare valori di peso:

E(net)$weight 

risultato atteso è alquanto simili:

> E(net)$weight 
[1] 8 1 10 1 15 1 1 5 7 1 

Ma sto ottenendo valori strani (e ogni volta diverso):

> E(net)$weight 
[1] 2.121996e-314 2.121996e-313 1.697597e-313 1.291034e-57 1.273197e-312 5.092790e-313 2.121996e-314 2.121996e-314 6.320627e-316 2.121996e-314 1.273197e-312 2.121996e-313 
[13] 8.026755e-316 9.734900e-72 1.273197e-312 8.027076e-316 6.320491e-316 8.190221e-316 5.092790e-313 1.968065e-62 6.358638e-316 

non riesco a trovare dove e cosa sto facendo male? Ti prego, aiutami a ottenere il risultato atteso corretto e, per favore, dimmi perché è questa uscita strana e anche quella ogni volta diversa quando la eseguo. ??

Grazie, Nitin

risposta

2

Il problema sembra essere dovuto al tipo di dati degli elementi di matrice. graph.adjacency prevede elementi di tipo numeric. Non sono sicuro se è un bug.

Dopo lo fai,

m <- as.matrix(dat) 

impostare la sua modalità di numeric da:

mode(m) <- "numeric" 

e poi fare:

net <- graph.adjacency(m, mode = "undirected", weighted = TRUE, diag = FALSE) 
> E(net)$weight 
[1] 8 1 10 1 15 1 1 5 7 1 
+0

Grazie mille Arun. Questo ha funzionato per me. –

+1

È un bug: https://bugs.launchpad.net/igraph/+bug/1019624 –

6

Solo un piccolo esempio di lavoro di seguito, molto più chiara di quanto Input CSV.

library('igraph'); 
adjm1<-matrix(sample(0:1,100,replace=TRUE,prob=c(0.9,01)),nc=10); 
g1<-graph.adjacency(adjm1); 
plot(g1) 

enter image description here

P.S. ?graph.adjacency ha molti buoni esempi (ricordati di eseguire library('igraph')).

discussioni Correlati

  1. Creating co-occurrence matrix
  2. Co-occurrence matrix using SAC?
Problemi correlati