2012-10-13 4 views
9

Tôi có tệp txt sau đại diện cho mạng ở định dạng edgelist.Nhập edgelist có trọng số bằng igraph

Hai cột đầu tiên đại diện cho bình thường: đó nút được kết nối mà các nút khác

Cột thứ ba đại diện cho trọng lượng, đại diện cho số lần mỗi nút đã liên hệ với người kia.

Tôi đã tìm kiếm tài liệu igraph nhưng không đề cập đến cách đưa đối số cho trọng lượng khi nhập định dạng tệp chuẩn như txt.

Các tập tin có thể được truy cập từ here và đây là đoạn code tôi đã sử dụng:

read.graph("Irvine/OClinks_w.txt", format="edgelist") 

Mã này đối xử với cột thứ ba như một cái gì đó khác hơn so với trọng lượng.

Có ai biết giải pháp này không?

Trả lời

9

làm những điều sau gây ra quá nhiều phiền toái?

g <- read.table("Irvine/OClinks_w.txt") 
g <- graph.data.frame(g) 

nếu nó sau đó trực tiếp từ các tập tin mà bạn có thể sử dụng

g<-read.graph("Irvine/OClinks_w.txt",format="ncol") 
E(g)$weight 
+1

cả hai làm việc cho tôi. Nên được chấp nhận ... – pocketfullofcheese

1

Nếu bạn đang sử dụng Python và igraph, các dòng mã sau đây hoạt động để nhập khẩu khối lượng và tên đỉnh:

g1w=Graph.Read_Ncol("g1_ncol_format_weighted.txt",names=True) 

Lưu ý: bạn phải thông báo cho igraph để đọc thuộc tính tên với names=True, nếu không chỉ các số đỉnh sẽ được nhập.

đâu g1_ncol_format_weighted.txt trông giống như sau:

A B 2 
B C 3 

Để đảm bảo việc nhập khẩu làm việc đúng cách, sử dụng các dòng sau:

print(g1w.get_edgelist()) 
print(g1w.es["weight"]) 
print(g1w.vs["name"]) 
+0

Đây là Python và poster được sử dụng R. –

+0

Cảm ơn bạn đã làm rõ! – user217558

+0

Rất hữu ích, vì tôi muốn python. Cảm ơn – nealmcb