导入 rpy2.robjects 报错
我有一份包含一千万条记录的数据。我有一段R代码,需要通过3000次迭代来估算一个模型的系数。在这份数据上运行R代码非常耗时,有时候我的系统还会卡住。我使用的是64位的Windows 8.1,内存是4GB。
为了减少时间,我想把R和Python结合起来。虽然我对R有一定了解,但我对Python完全是新手。我发现可以用rpy2在Python中调用R(我使用的是Python 3.4.1)。
我做了以下操作:
import rpy2
import rpy2.robjects as robjects
但是出现了以下错误:
追踪记录(最近的调用在最前面): 文件 "C:\Python34\lib\site-packages\rpy2\rinterface__init__.py",第29行,在 0, win32con.KEY_QUERY_VALUE ) pywintypes.error: (2, 'RegOpenKeyEx', '系统找不到指定的文件。')
在处理上述异常时,又发生了另一个异常:
追踪记录(最近的调用在最前面): 文件 "",第1行,在 import rpy2.robjects as robjects 文件 "C:\Python34\lib\site-packages\rpy2\robjects__init__.py",第15行,在 import rpy2.rinterface as rinterface 文件 "C:\Python34\lib\site-packages\rpy2\rinterface__init__.py",第32行,在 except ImportError(ie): NameError: name 'ie' is not defined
我不明白为什么会出现这个错误。该如何解决这个问题呢?
不过,如果我这样做,就可以正常工作:
from rpy2 import *
如果有人能详细解释一下如何从Python调用R,并给出我问题的解决方案,那将非常有帮助。关于如何在R中更快地处理大数据的其他解决方案也会受到欢迎。
提前谢谢大家!
2 个回答
我在使用Win7 64位系统,搭配Python 2.7和R3.1.1时,遇到了完全一样的问题。
1) 首先,安装pywin32:http://sourceforge.net/projects/pywin32/
2) 然后,添加一个环境变量R_HOME:这个变量的值是R的安装路径,不是/Rx.x/bin。
虽然在导入时我还是遇到了“无法删除临时文件”的问题,但我已经能够完成这里提到的一些示例:http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html
我遇到了类似的问题,因为我的环境没有正确设置,导致 import win32api
时出现了 ImportError: DLL load failed: The specified module could not be found
的错误。我通过把包含 python.exe
的文件夹添加到我的 PATH
变量中解决了这个问题。
需要注意的是,异常 NameError: name 'ie' is not defined
是 rpy2 的一个bug,它隐藏了实际的异常,这个异常是因为无法导入 win32api
或 win32con
导致的。
不过,之后我又遇到了另一个异常 (RuntimeError: R_HOME not defined
),所以我最终按照另一个答案的建议,添加了一个 R_HOME
变量(= C:\Program Files\R\R-3.1.2
)。我还收到了 Unable to unlink tempfile
的警告,我猜这个问题还没有解决,具体可以参考 rpy2 windows Unable to unlink tempfile 和 https://bitbucket.org/lgautier/rpy2/issue/132/rpy2-windows-unable-to-unlink-tempfile。