Я только начинаю изучать, как использовать rpy2 с Python. Я в состоянии сделать простые графики и такой, но я столкнулся с проблемой, которую используют много опций в R ".". Например, вот вызов R, который работает:
barplot (t, col=heat.colors (2), имена arg=c ("pwn", "pwn2"))
где t является матрицей.
Я хочу использовать тот же вызов в Python, но он отклоняет "." часть names.arg. Мое понимание было то, что в Python Вы заменяете "." "_", таким образом, names_arg, например, но это не работает также. Я знаю, что это - основная проблема, таким образом, я надеюсь, что кто-то видел это и знает фиксацию. Спасибо!
Вы можете использовать словарь здесь для именованных аргументов (, используя ** ) как описано в документах, и вызов R напрямую для функций Отказ Также помните, что RPY2 ожидает его собственных векторных объектов . Да, это немного неловко, но на стороне плюс вы должны быть в состоянии сделать что-либо в RPY2, вы можете сделать в R.
from rpy2 import robjects
color = robjects.r("heat.colors")()
names = robjects.StrVector(("pwn", "pwn2"))
robjects.r.barplot(t, col=color, **{"names.arg":names})
(обратите внимание, что это для RPY2 версии 2.0.x; есть некоторые изменения в Relaned 2.1 , который у меня еще не было возможности посмотреть.)
Я не знаю, примет ли RPY, но вы можете иметь параметры ключевых слов с периодами в них. Вы должны пропустить их через словарь. Как это:
>>> def f(**kwds): print kwds
...
>>> f(a=5, b_c=6)
{'a': 5, 'b_c': 6}
>>> f(a=5, b.c=6)
Traceback ( File "<interactive input>", line 1
SyntaxError: keyword cant be an expression (<interactive input>, line 1)
>>> f(**{'a': 5, 'b.c': 6})
{'a': 5, 'b.c': 6}
с RPY2-2.1.0, один из способов написать было бы:
from rpy2.robjects.packages import importr
graphics = importr("graphics")
grdevices = importr("grDevices")
graphics.barplot_default(t,
col = grdevices.heat_colors(2),
names_arg = StrVector(("pwn", "pwn2")))
необходимость использовать barplot_default (скорее, что barplot) связано с Обширное использование эллипсовых ... 'в сигнатурах R'SFunction и к тому, что перевод названия параметра «Сохранить» Анализ r код функции содержит.
Подробнее, и пример функции для выполнения систематического перевода из '.' «_»: http://rpy.sourceforge.net/rpy2/doc-2.1/html/robjects.html#functions