【发布时间】:2015-12-09 19:40:14
【问题描述】:
对于python,我有点新手,但我想将使用rpy 的python 脚本转换为使用rpy2 的python 脚本。我们确实在某处安装了 rpy(对于 python 2.6.x),但它与当前版本的 R(3.2.0)并没有很好地配合。但是,我们确实为这些脚本中使用的 python 版本安装了 rpy2 (python 2.7[.5])
据我所知,这些是需要更改的行(我已经稍微简化了功能):
from rpy import r
r.library('<libname>', quietly=True)
r("""\
func <- function(x,a={options.a},b={options.b}) {{
...
*R code here*
...
l<-list(o=o,md=a+b)
l
}}""".format(options=options))
在脚本的后面,有一行调用了这个函数:
out = r.func(<python expression>)['o']
前半部分我可以这样做:
import rpy2.rpy_classic as rpy
rpy.set_default_mode(rpy.NO_CONVERSION)
rpy.r.library('<libname>', quietly=True)
rpy.r("""\
func <- function(x,a={options.a},b={options.b}) {{
...
*R code here*
...
l<-list(o=o,md=a+b)
l
}}""".format(options=options))
在交互式提示下尝试上述操作(使用一些假数据),输出为:
<rpy2.rpy_classic.Robj object at 0x2b9e48481510>
但我需要函数rpy.r.func 的输出值而不是其未转换的值(因为我需要获取func(<expression)$o 值)
我在正确的轨道上前进吗?以及如何重写 rpy (v1) 代码以便得到我想要的(来自 rpy2)?
【问题讨论】: