将命名列表向量从R转换为Python中的rpy2?

时间:2013-08-01 23:49:04

标签: python r rpy2

python中Rpy2中以下R代码的等价物是什么?

Var1 = c("navy", "darkgreen")
names(Var1) = c("Class1", "Class2")
ann_colors = list(Var1 = Var1)

目前尚不清楚ann_colors是什么。在R中评估时,它给出:

> ann_colors
$Var1
     Class1      Class2 
     "navy" "darkgreen" 

robject.ListVector吗?我试过了:

robjects.ListVector({"Class1": "navy", "Class2": "green"})

但它并不完全是因为我不确定如何告诉ListVector对象该对象的名称是Var1,例如list(Var1 = Var1)

如何将其正确转换为rpy2?

2 个答案:

答案 0 :(得分:4)

如果我理解你的问题,你正在寻找的是TaggedList:

import rpy2.rlike.container as rlc
Var1 = rlc.TaggedList(["navy","darkgreen"], tags=('Class1', 'Class2'))

有关详细信息,请参阅http://rpy.sourceforge.net/rpy2/doc-2.2/html/rlike.html

答案 1 :(得分:2)

经过数小时的反复试验,我找到了解决方案。我不完全理解为什么这个类似的变种不起作用,或者为什么这个方案不能与数据帧互换,但我需要做的是:

anno_colors = robj.StrVector(tuple(["navy", "green"]))
anno_colors.names = ["Class1", "Class2"]
od = OrderedDict()
od["Type"] = anno_colors
result = robj.ListVector(od)
print str(result)