【问题标题】:How to have recognized all the libraries Rpy2 R如何识别所有库 Rpy2 R
【发布时间】:2026-02-08 10:20:05
【问题描述】:

如何识别所有的库 Rpy2 R.

Rpy2 无法识别库、实用程序和工具。

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:没有名为包的模块 )

因为我可以更新 Rpy2 以毫无问题地加载所有库或 R 可以完成。

PS:我在 ubuntu 上使用 R 2.10 和 python 2.6

【问题讨论】:

    标签: python linux r ubuntu rpy2


    【解决方案1】:

    为了让 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 所提到的那样。

    【讨论】:

    • 您可能需要考虑存储 importr() 返回的对象(例如 utils = importr('utils') )。该对象类似于模块,并用额外的细节包装 R 对象(名称中的“.”替换为“_”,包括函数的参数名称)
    【解决方案2】:

    除非我弄错了——我不使用 Rpy2——这些包(顺便说一下,它们是不是库)在 R 启动时自动加载;您无需执行任何其他操作即可使用它们。这些包中的所有用户可见功能都在 R 启动期间可用。

    此外,您无法更新这些软件包 - 它们是 R。您只有在更新 R 本身时才能获得更新。在这一点上,它们与推荐的软件包(如 nlme、mgcv、MASS 等)不同,后者也在 CRAN 上,并且在 R 版本更新之间更新得更频繁。

    【讨论】: