Python编程语言的Python接口

我对R很新,而且很习惯Python。 我不太习惯写R代码。 我正在寻找R接口的Python接口,这让我使用python的 R包。

我做了谷歌的研究,发现几个包可以做到这一点:

  • Rpy2
  • PypeR
  • pyRserve

但不知道哪一个更好? 哪些有更多的贡献者和更积极的使用?

请注意我的主要要求是访问R包的Python途径

正如@lgautier所指出的那样, 在这个问题上已经有了另一个答案 。 我在这里留下我的答案,因为它增加了将R作为新手的经验,首先了解Python。


我同时使用Python和R,并且同情你作为R的新手的需要。

既然你得到的答案是主观的,我总结了几点经验:

  • 我使用rpy2作为我的界面,并发现它是'Pythonic',稳定,可预测,有效,足以满足我的需求。 我没有使用其他的软件包,所以这不是对他们的评论,而是rpy2本身的优点。
  • 但是不要指望在不学习两者的情况下,使用R的简单方法。 我发现在这两种语言之间添加一个接口可以让你轻易地编码,但是对于某些语言不完善的人来说,这是一个debugging的噩梦。

我的build议:

  1. 对于大多数应用程序来说,Python有一些软件包,可以让你在R中进行大部分的工作,从数据转换到绘图。 查看SciPy , NumPy , pandas , BioPython , matplotlib和其他科学软件包,甚至是完整的Anaconda或Enthought python发行版。 这使您可以保持在Python环境中,并为您提供所需的大部分function。
  2. 同时,您将需要R广泛的专用软件包,所以花一些时间在交互式环境中学习它。 我发现几乎不可能在命令行上掌握基本的R,但是RStudio和Quick-R和Learn-R的教程让我变得非常快。

一旦你知道了两者,那么你将会用rpy2来做魔法,而不用担心跨语言的debugging。


新资源

2015年1月29日更新

这个答案已经被certificate是stream行的,所以我认为指出两个最近的资源是有用的:

  • Ralph Heinkel在2014年EuroPython上就这个话题进行了精彩的演讲。 结合Python和R的强大世界的video可在EuroPython YouTube频道上find 。 引用他:

三元组R , Rserve和pyRserve允许构build从Python到R的networking桥接:现在,可以从Python调用R函数,就好像它们是用Python实现的一样,甚至可以通过这个连接来执行完整的R脚本。

  • 现在可以在IPython/Jupyter使用rmagic结合R和Python ,极大地简化了生产可重复研究和结合两种语言的笔记本的工作。

关于rpy2,pyrserve和pyper相互比较的问题在网站上被回答了。

关于贡献者的数量,我想说3个都有一个相对较小的数字。 像Ohloh这样的网站可以给出更详细的答案。

使用一个软件包有多积极,难以确定。 一个迹象可能是下载次数,另一个可能是邮件列表上的post数量,或者像站点上的数字问题,使用它或引用它的其他软件包数量,提及包。 尽pipe我相信我可以给予公正的评价,但也可能会被视为有利益冲突。 😉

三者都有其优点和缺点。 我会说,你基于你的select。

我个人的经验是与Rpy ,而不是Rpy2 。 我用了一段时间,但放弃了它,有利于使用system命令。 对我来说,一个典型的例子是使用Python脚本运行FORTRAN模型,并使用R进行后期处理。根据我的经验,最简单的解决scheme是使用R创build一个命令行工具,这很简单(至less在Linux下)。 命令行工具可以在模型运行的根目录下执行,脚本会在Routput目录下生成一组R对象和图。 以这种方式断开R和Python的好处是我可以很容易地debugging与Python代码分开的R代码。

我认为当R和Python之间需要很多来回的交stream时, Rpy真正的闪耀。 但是,如果function很好地分离,并且磁盘I / O的开销不是太差,我会坚持system调用。 有关系统调用的更多信息,请参阅?system ,以及Rscript R脚本作为命令行工具运行的Rscript

关于你希望以Python的方式编写R代码,这是不可能的,因为所有的解决scheme都要求你用R语法编写R代码。 对于Rpy这意味着R语法,但有一点不同(例如没有)。 我同意@gauden,通过Rpy使用R没有任何捷径。