2013-07-30 129 views
0

我用下面的數據來創建圖形,顯示雙向邊緣的igraph

actors <- data.frame(name=c("Alice", "Bob", "Cecil", 
          "David","Esmeralda"), 
        age=c(48,33,45,34,21), 
        gender=c("F","M","F","M","F")) 

relations <- data.frame(from=  c("Bob", "Cecil", "Cecil", "David", 
            "David", "Esmeralda", "Alice"), 
         to=  c("Alice", "Bob", "Alice", "Alice", 
            "Bob", "Alice",  "Bob"), 
         same.dept= c(FALSE, FALSE, TRUE, FALSE, 
             FALSE, TRUE,  FALSE), 
         friendship=c(4,  5,  5,  2, 
             1,  1,   4), 
         advice= c(4,  5,  5,  4, 
             2,  3,   4)) 

g <- graph.data.frame(relations, directed=TRUE, vertices=actors) 

plot(g, layout=layout.kamada.kawai) 

你可以看到頂點「愛麗絲」和「鮑勃」在圖形雙向。

我只想看看哪些頂點有雙向?我怎樣才能做到這一點?

非常感謝!

回答

0

您可以使用is.mutual()它告訴你一個邊緣是否有相反的邊緣在圖中:

is.mutual(g) 
# [1] TRUE FALSE FALSE FALSE FALSE FALSE TRUE 

cbind(get.edgelist(g), is.mutual(g)) 
#  [,1]  [,2] [,3] 
# [1,] "Bob"  "Alice" "TRUE" 
# [2,] "Cecil"  "Bob" "FALSE" 
# [3,] "Cecil"  "Alice" "FALSE" 
# [4,] "David"  "Alice" "FALSE" 
# [5,] "David"  "Bob" "FALSE" 
# [6,] "Esmeralda" "Alice" "FALSE" 
# [7,] "Alice"  "Bob" "TRUE" 
+0

感謝的Gabor!它根據你的建議工作。 –