translating named list vectors from R into rpy2 in Python?

浪尽此生 提交于 2019-12-22 05:44:05

问题


What is the equivalent of the following R code in Rpy2 in python?

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

It's not clear what ann_colors is. When evaluated in R it gives:

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

Is it an robject.ListVector? I tried:

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

but it's not quite it because I'm not sure how to tell the ListVector object that the name of this object is Var1, i.e. something like list(Var1 = Var1).

How can this be properly translated to rpy2?


回答1:


If I understand right your question what you are looking for is a TaggedList:

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

See http://rpy.sourceforge.net/rpy2/doc-2.2/html/rlike.html for more details.




回答2:


After many hours of trial and error, I found the solution. I don't fully understand why the similar variants of this did not work, or why this scheme is not interchangeable with dataframes, but what I got to work is:

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)


来源:https://stackoverflow.com/questions/18006542/translating-named-list-vectors-from-r-into-rpy2-in-python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!