2013-01-15 26 views
7

Tôi có một mẫu mã trong R như sau:sử dụng graph.adjacency() trong 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) 

nơi tôi sử dụng tập tin csv như là đầu vào mà chứa sau dữ liệu:

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 

Sau khi tôi này sử dụng lệnh sau để kiểm tra giá trị trọng lượng:

E(net)$weight 

sản lượng dự kiến ​​là hơi như thế này:

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

Nhưng tôi nhận được giá trị kỳ lạ (và tất cả các thời gian khác nhau):

> 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 

Tôi không thể tìm thấy ở đâu và những gì tôi đang làm sai? Xin vui lòng giúp tôi để có được kết quả mong đợi chính xác và cũng xin vui lòng cho tôi biết tại sao sản lượng lạ này và rằng quá mọi thời gian khác nhau khi tôi chạy nó. ??

Cảm ơn, Nitin

Trả lời

2

Vấn đề có vẻ là do các dữ liệu kiểu của các yếu tố ma trận. graph.adjacency hy vọng các thành phần thuộc loại numeric. Không chắc chắn nếu nó là một lỗi.

Sau khi bạn làm,

m <- as.matrix(dat) 

thiết lập chế độ của nó để numeric bởi:

mode(m) <- "numeric" 

Và sau đó làm:

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

Thanks a lot Arun. Điều này làm việc cho tôi. –

+1

Đó là lỗi: https://bugs.launchpad.net/igraph/+bug/1019624 –

6

Chỉ cần một ví dụ làm việc nhỏ dưới đây, rõ ràng hơn nhiều so với Nhập 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

T.B. ?graph.adjacency có rất nhiều ví dụ hay (hãy nhớ chạy library('igraph')).

đề liên quan

  1. Creating co-occurrence matrix
  2. Co-occurrence matrix using SAC?
Các vấn đề liên quan