2013-04-07 72 views
14

Tôi đang cố gắng đặt một biểu đồ igraph bằng một đặc tính cạnh (như nhãn của nó). Trong ví dụ tái sản xuất tôi đã không biết xấu hổ bị đánh cắp từ một bài với một chút sửa đổi, tôi muốn để có thể tách các quan hệ Best Friend (BF) từ các mối quan hệ gia đình (FAM):Đồ thị biểu đồ tập hợp con theo nhãn

edges <- matrix(c(103, 86, 24, 103, 103, 2, 92, 103, 87, 103, 103, 101, 103, 44), ncol=2, byrow=T) 
g <- graph(as.vector(t(edges))) 
E(g)[c(2:4,7)]$label<-"FAM" 
E(g)[c(1,5,6)]$label<-"BF" 

Điều tốt nhất tôi có thể làm cho đến nay là hiển thị các cạnh có một loại cà vạt:

E(g)[E(g)$label=="BF"] 
V(g)[E(g)$label=="BF"] 

Trả lời

18

thế nào về:

gfam <- subgraph.edges(graph=g, eids=which(E(g)$label=="FAM"), delete.vertices = TRUE) 
gbf <- subgraph.edges(graph=g, eids=which(E(g)$label=="BF"), delete.vertices = TRUE) 

Đề xuất cho igraph/mạng phân tích hướng dẫn/shameless plug: http://sna.stanford.edu/rlabs.php

16

Tôi khuyên bạn nên đọc ?V?E để xem cách chọn cạnh và đỉnh. Một giải pháp khá nhỏ gọn và dễ đọc cho câu hỏi của bạn là

subgraph.edges(g, E(g)[label=="FAM"]) 
subgraph.edges(g, E(g)[label=="BF"]) 

Điều này cũng loại bỏ các đỉnh nếu chúng không có cạnh của nhãn được chỉ định. Xem ?subgraph.edges để biết chi tiết.

+0

Cảm ơn! Tôi không biết về các lệnh con. –

Các vấn đề liên quan