2016-05-31 2 views
2

1000 개의 가장자리를 가진 igraph를 만들었습니다. 내 목표는 그 igraph에서 발견 된 모든 삼각형을 추출하는 것이지만 숫자가 아닌 레이블을 포함시키는 것입니다. 나는 또한레이블이있는 Igraph의 모든 삼각형을 추출하십시오.

내가 전화 단순히 시도 3 열이있는 dataframe 형태 (삼각형의 각 노드에 대해 하나)에서 할 것을 권장합니다

triangles(graph) 

을하고 모두 다시 이름 목록을 제공 하나의 열에 :

+ 28431/204 vertices, named: 
    [1] node_a             
    [2] node_b     
    [3] node_c 
    [4] node_a             
    [5] node_b     
    [6] node_d     
    [7] node_a             
    [8] node_b     
    [9] node_e        
    [10] node_a             
+ ... omitted several vertices 

가 나는 때 :

adjacent.triangles(graph) 

가 반환 모든 숫자하지만 N 노드의 이름을 해주 :

[1] 15 103 45 121 152 78 325 325 3 35 90 0 488 283 3 0 325 325 325 325 78 21 190 3 
[25] 133 0 47 167 167 6 3 325 505 415 0 36 78 325 78 78 90 6 206 6 36 0 78 49 

을 나는 다음과 같은 형식으로 나에게 삼각형을 줄 수 igraph를 통해 기능을 찾을 필요가 :

COL1   COL2  COL3 
node_a  node_b  node_c 
node_a  node_b  node_d 
node_a  node_b  node_e 
node_f  node_g  node_h 

어떤 도움이 좋은 것입니다, 감사합니다!

답변

6

당신은

cl.tri=cliques(g,min=3,max=3) 

크기 세 (삼각형)의 파벌을 찾은 다음에 의한 dataframe로 조립, (가정 g이 그래프) 도당 기능을 사용할 수 있습니다

df<-lapply(cl.tri,function(x){V(g)$name[x]}) 

df2=data.frame(matrix(unlist(df),ncol=3,byrow=T)) 
+0

고맙습니다. 그러면 레이블 일치 여부를 확인하기 위해 색인 일치를 수행할까요? –

+1

예, 데이터 프레임을 만들기 전에 lapply (cl.tri, function (x) {V (g) $ names [x]}) 과 같은 작업을 수행하거나 apply (df, 2, function x) {V (g) $ names [x]}) 후에. 레이블을 직접 반환하는 cliques 함수를 가져 오는 방법이있을 수 있지만 확실하지 않습니다. –

+0

좋은 시작이었습니다. 고마워요. 내가 df = data.frame (행렬 (unlist (cl.tri), ncol = 3, byrow = T)을 실행했을 때 오류가 발생했지만 첫 번째 함수를 시도했다. –

관련 문제