Python と Rpy2:「。」を持つオプションを使用してプロット関数を呼び出します。それらの中に

StackOverflow https://stackoverflow.com/questions/2125218

  •  22-09-2019
  •  | 
  •  

質問

Python で rpy2 を使用する方法を学び始めたところです。簡単なプロットなどは作成できますが、R の多くのオプションで「.」が使用されているという問題に遭遇しました。たとえば、機能する R 呼び出しは次のとおりです。

barplot(t,col=heat.colors(2), names.arg=c("pwn", "pwn2"))

ここで、 t は行列です。

Pythonで同じコールを使用したいのですが、「」を拒否します。 names.argの一部。私の理解は、Pythonで「」を置き換えることでした。 「_」では、たとえばnames_argですが、それも機能していません。これが基本的な問題であることはわかっているので、誰かがこれを見て修正方法を知っていることを願っています。ありがとう!

役に立ちましたか?

解決

ここで名前付き引数の辞書を使用できます (**を使用して) として 説明された ドキュメントで、関数に対して R を直接呼び出します。また、RPy2 はそれを期待していることにも注意してください。 独自のベクター オブジェクト. 。はい、少しぎこちないですが、プラス面としては、R で実行できることはすべて rpy2 で実行できるはずです。

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