如何识别所有Rpy2 R库

4 投票
2 回答
2263 浏览
提问于 2025-04-16 06:55

如何让Rpy2识别所有的R库。

Rpy2没有识别到utils和tools这些库。

import rpy2.robjects as robjects

R = robjects.r  

>>> R['library']("utils")

RVector - Python:0x7f65fc85cfc8 / R:0x19bb980

>>> R['library']("tools")

RVector - Python:0x7f65fc85f5a8 / R:0x2419140

(>>> from rpy2.robjects.packages import importr 追踪(最近的调用最后): 文件 "", 第1行,在 ImportError: 没有名为packages的模块 )

我该如何更新Rpy2,以便能够顺利加载所有库,或者有什么其他方法可以做到。

附注:我在ubuntu上使用的是R 2.10和python 2.6。

2 个回答

1

如果我没记错的话——我不使用Rpy2——这些包(顺便说一下,它们不是库)在你启动R的时候会自动加载;你不需要做其他任何事情就可以使用它们。在R启动时,所有用户可以看到的功能都会被提供。

另外,你不能单独更新这些包——它们就是R的一部分。只有当你更新R本身的时候,才会得到更新。这样它们和一些推荐的包(比如nlme、mgcv、MASS等)不同,这些推荐包也在CRAN上,并且在R版本更新之间会更频繁地更新。

4

为了让importr命令正常工作,你可能需要升级你的rpy2版本——可以先检查一下你当前的版本:

print rpy2.__version__

我认为你需要版本2.1.0或更高的版本。在2.1.7下这个是可以用的,但在2.0.3上就不行:

In [1]: import rpy2.robjects as robjects

In [2]: R = robjects.r  

In [3]: from rpy2.robjects.packages import importr

In [4]: importr("utils")
Out[4]: <rpy2.robjects.packages.SignatureTranslatedPackage object at 0x1e96310>

我不太确定你想要做什么,因为这些库应该不需要额外导入就能正常使用,正如Gavin提到的那样。

撰写回答