我刚开始学习如何使用rpy2与蟒蛇。我能够使简单的谋和这样,但是我碰到的问题,许多选择中R使用"。".例如,这里有一个R呼叫:

barplot(t,col=热。颜色(2)中,名称。arg=c("pwn","pwn2"))

t是一个矩阵。

我想用同样的呼叫蟒蛇,但它拒绝"."部分的名称。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;有一些变化 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#功能

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top