我试图将下面的Python代码(for Networkx
)翻译成R(for 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的部分转换
^{pr2}$这是我运行R代码的最后一部分时收到的错误代码:
Error in intI(i, n = x@Dim[1], dn[[1]], give.dn = FALSE) :
no 'dimnames[[.]]': cannot use character indexing
在PythonNetworkx
中,可以通过graphname.function.函数(例如DG.add_node(dogID,typ='animal')
)。在
在R的igraph
中有等价物吗?在
有没有什么方法可以在不定义节点数的情况下调用R的igraph
中的节点?在
另外,你会提供一些关于完成R的翻译的提示或建议吗?在
谢谢。在
以下包含.csv数据:
id、物种、位置1、位置2、动物id、SUM病毒、流感-1、流感-2、流感-3、流感-4、流感-5、流感-6、流感-7、流感-8、流感-9
YUI-4322,主机1,公园4,公园,MW 391,1,0,0,0,0,0,0,0,0
YUI-4321,主机2,公园4,公园,MW 390,0,0,0,0,0,0,0,0,0
YUI-4320,主机2,公园4,公园,MW 389,1,0,0,0,0,0,0,0,0
YUI-4319,主机2,公园4,公园,MW 388,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
YUI-4317,主机1,公园4,公园,MW 386,0,0,0,0,0,0,0,0,0
YUI-4316,主机2,公园4,公园,MW 385,1,1,0,0,0,0,0,0,0,0
YUI-2315,主机1,防护罩2,防护罩,MV319,1,0,0,0,0,0,1,0,0
YUI-4314,主机1,防护罩2,防护罩,MV 332,1,0,0,0,0,0,1,0,0
我不明白你在做什么,但我可以告诉你,狗是一个图形对象,你试图在一条直线上做多件事情,这些事情在一起是没有意义的。在
叫狗[流感]会给出所有与流感相关的顶点。在
添加顶点(8)是向图形中添加8个新顶点。在
add_vertices(dogs[flu],typ=“host”)正在向图中添加相同的节点,如果dogs[flu]是可调用的,那么这些节点将已经存在。在
只需在前面添加所有节点(add_vertices[fluCols],尽管可能需要int而不是字符串),然后在之后修改这些节点。在
相关问题 更多 >
编程相关推荐