首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rpy2、pyrserve和PypeR如何比较?

Rpy2、pyrserve和PypeR如何比较?
EN

Stack Overflow用户
提问于 2011-04-12 12:32:08
回答 4查看 18.3K关注 0票数 62

我想从Python程序中访问R。我知道Rpy2、pyrserve和PypeR。

这三个选项的优点或缺点是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-13 09:19:18

我知道三个中的一个比其他的更好,但按照问题中给出的顺序:

rpy2:

Python和R (R作为嵌入式进程运行)之间的

  • C级接口无需复制data over
  • Conversely,即可显示给Python的
  • R对象Python数组可以暴露给R,而无需对低级接口(接近R C-
  • )和高级接口(对于矢量和数组的convenience)
  • In-place修改)进行复制,可以在Python
  • Possible中实现
  • R回调函数,以拥有带有Python标签的匿名R对象
  • Python pickling possible
  • Full通过其控制台自定义R的行为(因此可以在有限支持的情况下实现完整的R GUI)
  • MSWindows

pyrserve:

  • 原生Python代码(将/应该/可能与链接到远程计算和RServe

的CPython、Jython、IronPython)

  • use R的Rserve

  • advantages和不便一起使用

派珀:

  • 原生Python代码(将/应该/可能与CPython、Jython、IronPython一起使用)
  • 使用管道使Python与R进行通信(与之相关的优点和不便之处)

编辑: Windows对rpy2的支持

票数 39
EN

Stack Overflow用户

发布于 2011-04-13 00:31:27

来自Journal of Statistical Software on PypeR上的论文

RPy提供了一种从Python访问R的简单而有效的方法。这个包允许Python程序将基本数据类型的Python对象传递给R函数,并在Python对象中返回结果。对于Python和R频繁交互的情况,这些特性使其成为一个有吸引力的解决方案。但是,这个包仍然有一些限制,如下所示。

性能:

对于大型数据集或计算密集型任务,RPy的表现可能不是很好。在生成R数据的Python副本时,不可避免地会消耗大量时间和内存,因为在每一轮对话中,RPy都会将R表达式的返回值转换为基本类型的Python对象或NumPy数组。RPy2是RPy最近开发的一个分支,它使用Python对象来引用R对象,而不是将它们复制回Python对象。此策略避免了频繁的数据转换,并提高了速度。然而,内存消耗仍然是一个问题。..。当我们实现WebArray时(Xia等人。2005),一个用于微阵列数据分析的在线平台,如果通过RPy运行R而不是通过R的命令行用户界面,一个作业大约多消耗四分之一的计算时间。因此,我们决定在随后的开发中通过管道运行Python语言中的R,例如WebArrayDB (Xia et al.2009),它保持了与独立运行R时相同的性能。我们不知道造成这种性能差异的确切原因,但我们注意到RPy直接使用R的共享库来运行R脚本。相反,通过管道运行R意味着直接运行R解释器。

内存:

R因其不经济地使用内存而受到谴责。删除大型R对象后,这些对象所使用的内存很少被释放。有时,从R释放内存的唯一方法是退出R。RPy模块将R包装在Python对象中。但是,即使删除了Python对象,R库也会保留在内存中。换句话说,R使用的内存只有在宿主Python脚本终止后才能释放。

可移植性:

作为一个用C语言编写的扩展模块,RPy源包必须在POSIX (Portable Operating System Interface for Unix)系统上使用特定的R版本进行编译,并且R必须在启用共享库的情况下编译。此外,Windows的二进制发行版被绑定到不同版本的Python/R的特定组合上,因此用户很难找到适合其软件环境的发行版。

票数 16
EN

Stack Overflow用户

发布于 2012-11-30 06:57:53

在pyper中,我不能使用assign()将大矩阵从python传递给r实例。但是,我对rpy2没有意见。这只是我的经验。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5630441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档