R编程语言的Python接口

dar*_*han 48 python r rpy2 pyrserve pyper

我对R很新,而且几乎习惯了python.我写R代码并不是那么舒服.我正在寻找R的python接口,它允许我以pythonic方式使用R包.

我做了谷歌研究,发现很少有可以做到这一点的软件包:

但不确定哪一个更好?哪个贡献者更多,更积极地使用?

请注意我的主要要求是访问R包的pythonic方式.

gau*_*den 60

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


我同时使用Python和R并同情你作为R的新手的需求.

既然你得到的任何答案都是主观的,我总结一下我的经验中的几点:

  • 我使用rpy2作为我的界面,发现它是'Pythonic',稳定,可预测,并且足以满足我的需求.我没有使用其他软件包,所以这不是对它们的评论,而是rpy2本身的优点.
  • 但是不要指望在不学习两者的情况下在Python中使用R的简单方法.我发现在两种语言之间添加一个接口可以在您知道这两种语言时轻松编码,但对于缺少其中一种语言的人来说,这是一个调试的噩梦.

我的建议:

  1. 对于大多数应用程序,Python具有允许您执行R中要执行的大部分操作的程序包,从数据争用到绘图.查看SciPy,NumPy,pandas,BioPython,matplotlib和其他科学软件包,甚至是完整的AnacondaEnthought python发行版.这使您可以保持在Python环境中,并为您提供所需的大部分功能.
  2. 同时,您将需要R的各种专用软件包,因此请花一些时间在交互式环境中学习它.我发现几乎不可能在命令行上掌握基本的R,但是RStudioQuick-RLearn-R的教程让我走得很快.

一旦你知道了这两个,那么你将使用rpy2做魔术,而不会出现跨语言调试的恐怖.


新资源

2015年1月29日更新

这个答案已经证明很受欢迎,所以我认为指出两个最近的资源是有用的:

三元组R,RservepyRserve允许建立从Python到R的网桥:现在可以从Python调用R函数,就好像它们是用Python实现的一样,甚至可以通过这个连接执行完整的R脚本.

  • 现在可以R和Python的使用结合rmagicIPython/Jupyter极大地缓解了生产重复性研究和结合了两种语言的笔记本电脑的工作.

  • @PaulHiemstra:同样在这里.我永远无法确定某些东西是否能够正常工作(a)因为我有Python或R中的错误或(b)因为rpy2无法正常工作或(c)组合.现在我直接在R中编码我需要的位,然后在需要的时候从Python中执行脚本. (2认同)
  • 浏览器目前无法在rpy2中运行(https://bitbucket.org/lgautier/rpy2/issue/66/segfault-when-using-browser-inside-rpy2).在评估R代码期间发生的错误将引发RRuntimeError异常,该异常应该告诉R或Python中的故障点. (2认同)

lga*_*ier 5

有关rpy2、pyrserve 和 pyper相互比较的问题之前已在该网站上得到解答。

至于贡献者的数量,我想说这三个人的数量都相对较少。像Ohloh这样的网站可以给出更详细的答案。

一个包的使用活跃程度很难确定。一个指标可能是下载次数,另一个指标可能是邮件列表上的帖子数量或 stackoverflow 等网站上的问题数量、使用或引用它的其他软件包的数量、提及该内容的简历或职位空缺的数量。包裹。尽管我相信我可以给出公正的评估,但我也可能被视为存在利益冲突。;-)

这三者各有利弊。我想说的是,你的选择基于此。