rpy2 2.2.2的numpy2ri转换问题

2024-04-29 06:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我将rpy2-2.2.2与新的免费python发行版一起使用,其中包括numpy 1.6.0和python2.7.2。我easy_安装了rpy2,结果安装了v.2.2.2,所有测试都成功了。在

我遇到的问题是我编写的代码在rpy2 2.1.8和python2.6上运行良好。问题在于将数组从numpy转换为R。在

以下是相关代码片段:

import rpy2                    
import rpy2.rinterface as rinterface
import rpy2.robjects as rob    
import rpy2.rlike.container as rlc
import numpy as np            
import rpy2.robjects.numpy2ri  
r = rob.r
...
    HGr     = rob.conversion.py2ri(HG_reg)
    RHSr    = rob.conversion.py2ri(RHS)
    #
    CalData = rlc.TaggedList([HGr,RHSr],tags=('hg','rhs'))
    CalData = rob.DataFrame(CalData)

    r('''library(pls)''')
    #rob.globalEnv["HGr"] = HGr
    #rob.globalEnv["RHSr"] = RHSr
    rob.globalenv["CalData"] = CalData


    # perform the PLS regression
    if wetlflag:
        HGresults = r.plsr(r("hg ~ rhs.1 + rhs.2 + rhs.3 + rhs.4"),data=CalData,validation="LOO")

我很乐意承认这并不是最优雅的做事方式,但它在以前和现在我需要提供结果的时候都是坏的(!)。我得到的错误是:

^{pr2}$

我找到了讨论here并得到了这样的印象:numpy数组现在自动转换为R数组,但是注释掉rob.conversion.py2ri(HG_reg)语句并直接使用numpy数组似乎也失败了。我错过了什么明显的东西吗?为什么会在2.1.8和2.2.2之间中断?在


Tags: 代码importnumpyas数组robconversionrpy2
1条回答
网友
1楼 · 发布于 2024-04-29 06:26:56

来自http://rpy.sourceforge.net/rpy2/doc-2.2/html/numpy.html#from-numpy-to-rpy2

Warning

In earlier versions of rpy2, the import was all that was needed to have the conversion. A side-effect when importing a module can lead to problems, and there is now an extra step to make the conversion active: call the function rpy2.robjects.activate().

所以把rpy2.robjects.activate()放在导入之后,你应该没问题。在

相关问题 更多 >