2016-03-29 3 views
0

ich eine ungerichtete IGRAPH mit den folgenden Kanten erstellt habe A--A, A--B, B--A, C--D, A--C und A--BSuche Anzahl der Verbindungen zwischen den Knoten in IGRAPH Netzwerk in R

library(igraph) 
my_data = data.frame(id1=c("A","A","B","C","A","A"),id2=c("A","B","A","D","C","B")) 
g = graph.data.frame(my_data,directed=F) 

ich eine Ausgabe, dass es so will listet alle eindeutigen Kanten und die Anzahl der Kanten auf. Unten ist ein Beispiel basierend auf der obigen Grafik.

Column1 Column2 Column3 
    A  A  1 
    A  B  3 
    A  C  1 
    C  D  1 
+0

Was haben Sie versucht, so weit? – symbolrush

+0

@symbolrush - eine Problemumgehung gefunden. bitte die Antwort unten. – Oshan

Antwort

0

Herausgefunden. Verwendete den folgenden Code, um die Ausgabe zu erhalten.

library(igraph) 
require(splitstackshape) 
require(data.table) 

my_data = data.frame(id1=c("A","B","C","A","A"),id2=c("B","A","D","C","B")) 
g = graph.data.frame(my_data,directed=F) 

edge=as_ids(E(g)) 
edge=as.data.frame(edge) 
split = as.data.table(cSplit(edge,"edge","|")) 
split[,':='(dummy=1, 
      key = paste(edge_1,edge_2,sep="_"))] 
split = unique(split[,.(edge_1,edge_2,sum(dummy)),by=key])[,2:4,with=F] 
split 

# A B 3 
# C D 1 
# A C 1 
1

Sie etwas tun könnte, wie,

table(vapply(paste(my_data$id1, my_data$id2), function(i) paste(sort(strsplit(i, ' ')[[1]]), collapse=' '), ' ')) 

#A A A B A C C D 
# 1 3 1 1 
Verwandte Themen