2017-05-16 6 views
0

다음 파이썬 코드 (Networkx)를 R (igraph)로 변환하려고합니다. Python Networkx에서 오류가있는 Rigraph 변환

다음

# Python code 

import csv 
import networkx as nx 
import urllib 

DG=nx.DiGraph() 

dogcsv=csv.DictReader(open("dogs.csv","rU")) 

dogid=0 

nodeStr=['id', 'species', 'Location 1', 'Location 2'] 

nodeInt=['sumflu'] 

fluCols=['Influenza-1', 'Influenza-2', 'Influenza-3', 'Influenza-4', 
'Influenza-5', 'Influenza-6', 'Influenza-7', 'Influenza-8', 'Influenza-9'] 

for flu in fluCols: 
    DG.add_node(flu,typ="species") 

for row in dogcsv: 
    dogID='animal'+str(dogid) 
    DG.add_node(dogID,typ='animal') 
    for dog in nodeStr: 
     DG.node[dogID][dog]=row[dog] 
    for dog in nodeInt: 
     DG.node[dogID][dog]=int(row[dog]) 
    for flu in fluCols: 
     if str(row[flu])=='1': 
      DG.add_edge(dogID,flu) 
    dogid=dogid+1 

는의 부분 전환에 나의 시도 파이썬에서 R.에

# R code 

library("data.table") 
library("igraph") 

dogs <- make_empty_graph() 

dogcsv <- fread("dogs.csv") 

dogid <- 0 

nodeStr <- c("id", "species", "Location 1", "Location 2") 

nodeInt <- "sumflu" 

fluCols <- c("Influenza-1", "Influenza-2", "Influenza-3", "Influenza-4", 
"Influenza-5", "Influenza-6", "Influenza-7", "Influenza-8") 

for(flu in fluCols) { 
dogs[flu] <- dogs %>% add_vertices(8) %>% add_vertices(dogs[flu], typ = "host") 
    } 

이것은 내가 R 코드의 마지막 부분을 실행할 때 나타나는 오류 코드입니다 :

파이썬 Networkx에서
Error in intI(i, n = [email protected][1], dn[[1]], give.dn = FALSE) : 
    no 'dimnames[[.]]': cannot use character indexing 

, 그래프는 graphname.function (예에 의해 호출 할 수 있습니다. DG.add_node(dogID,typ='animal')).

R의 igraph에 해당하는 항목이 있습니까?

노드의 수를 정의하지 않고도 R의 igraph에있는 노드를 호출 할 수있는 방법이 있습니까?

또한 R로 번역 할 때 힌트 나 제안을 해주겠습니까?

감사합니다.


다음은 .CSV 데이터 포함

ID 종, 위치 1, 위치 2, 동물 ID, sumvirus을 인플루엔자 1, 인플루엔자 2 인플루엔자 3, 인플루엔자 (4) 인플루엔자 -5, 인플루엔자 -6, 인플루엔자 -7, 인플루엔자 -8, 인플루엔자 -9
YUI-4322, host1, Park 4, Park, MW 391,1,0000000 , 0,0
YUI-4321, host2, Park 4, Park, MW 390000000000
YUI-4320, host2, Park 4, Park, MW 389,1,000000000
YUI-4319, host2, Park 4, Park, MW 388,0,0,0,0,0, 0,0,0,0,0
YUI-7318, host2, Park 4, Park, MW 387,1,00000000
YUI-4317, host1, Park 4, Park, MW 386 , 0000000000
YUI-4316, host2, Park 4, Park, MW 385,1,1,0,0,0,0,0, 0,0,0
YUI-2315, host1, Shelter 2, Shelter, MV319,1,000000000
YUI-4314, host1, Shelter 2, Shelter, MV 332,1,000000000

+0

관심이 있으신가요? [http://stackoverflow.com/questions/17433402/r-igraph-rename-vertices](this).igraph Python 버전이 존재합니다. 아마도 중간 단계로 번역 할 수 있습니다. 비록 당신은 어떻게 networkx를 떠날 수 있 었는가? ;-) –

답변

0

나는 당신이하고있는 것과 혼동하지만 개는 그래프 개체라고 말할 수 있습니다. , 그리고 당신은 함께 이해할 수없는 한 줄에 여러 가지 일을하려고합니다.

[독감]은 독감에 연결된 모든 버텍스를 제공합니다.

add_vertices (8)는 8 개의 새로운 정점을 그래프에 추가합니다.

add_vertices (개 [flu], typ = "host") 개 [flu]를 호출 할 수있는 경우 이미 존재하는 그래프에 동일한 노드가 추가됩니다.

이전에 노드를 모두 추가하고 (add_vertices [fluCols], 문자열 대신 int가 필요할 수 있음) 노드를 수정 한 후 노드를 수정하십시오.