Перевод именованных списков векторов из R в rpy2 в Python?
Что эквивалентно следующему R-коду в Rpy2 в python?
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 ответа
Решение
После многих часов проб и ошибок я нашел решение. Я не до конца понимаю, почему подобные варианты этого не работали, или почему эта схема не взаимозаменяема с фреймами данных, но я начал работать так:
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)
Если я правильно понял ваш вопрос, то вы ищете 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 для получения дополнительной информации.