2017-05-16 3 views
0

次のPythonコード(Networkx)をR(igraph)に変換しようとしています。 エラーのあるPython NetworkxからR igraphへの変換

# 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 

はの部分的な変換で私の試みであるのPythonから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 

、グラフは、ex(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,0,0,0,0,0,0,0 、0,0
YUI-4321、host2、Park4、Park、MW390,0,0,0,0,0,0,0,0,0
YUI-4320、host2、Park 4、 Park、MW 389,1,0,0,0,0,0,0,0,0,0
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,0,0,0,0,0,0,0, YUI-4317、host1、Park 4、Park、MW 386 、0,0,0,0,0,0,0,0,0,0
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,0,0,0,0,0,0,0,0,0,
YUI-4314、host1、Shelter 2、 Shelter、MV 332,1,0,0,0,0,0,0,01,0,0

+0

あなたは[http://stackoverflow.com/questions/17433402/r-igraph-rename-vertices](this)に興味があるかもしれません。igraph Pythonバージョンが存在します。おそらく中間段階としてあなたはそれに翻訳することができます。どうしたらnetworkxから離れることができますか? ;-) –

答えて

0

私はあなたがやっていることと混同していますが、私は犬がグラフオブジェクトあなたは一緒に意味をなさない行で複数のことをやろうとしています。

犬を呼び出す[インフルエンザ]インフルエンザに接続されているすべての頂点を与えます。

add_vertices(8)は、8つの新しい頂点をグラフに追加しています。 dog [flu]、typ = "host")は、犬[flu]が呼び出し可能な場合に既に存在するグラフに同じノードを追加しています。

(add_vertices [fluCols]の前にすべてのノードを追加しますが、文字列の代わりにintが必要な場合もあります)、その後にそれらのノードを変更してください。

関連する問題