gpt4 book ai didi

python - numpy2ri 与 rpy2 2.2.2 的转换问题

转载 作者:行者123 更新时间:2023-11-30 23:51:25 24 4
gpt4 key购买 nike

我正在使用 rpy2-2.2.2 和新的免费 Enthought python 发行版,其中包括 numpy 1.6.0 和 python 2.7.2。我 easy_installed rpy2 导致安装了 v.2.2.2 并且所有测试都成功。

我遇到的问题是我编写的代码在 rpy2 2.1.8 和 python 2.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")

我很高兴地承认这不是最优雅的做事方式,但它以前有效,现在当我需要提供结果时,一切都被破坏了(!)。我得到的错误如下:

   Traceback (most recent call last):
File "Mercury_PLS_WL_DF.py", line 224, in <module>
HGr = rob.conversion.py2ri(HG_reg)
File "/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/site-packages/rpy2-2.2.2dev_20110726-py2.7-macosx-10.5-i386.egg/rpy2/robjects/__init__.py", line 134, in default_py2ri
raise(ValueError("Nothing can be done for the type %s at the moment." %(type(o))))
ValueError: Nothing can be done for the type <type 'numpy.ndarray'> at the moment.

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

最佳答案

来自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() 就可以了。

关于python - numpy2ri 与 rpy2 2.2.2 的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com