首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rpy2找不到已安装的外部R包

rpy2找不到已安装的外部R包
EN

Stack Overflow用户
提问于 2015-10-07 11:34:19
回答 1查看 3.3K关注 0票数 2

我以前也这样做过(大约1年前),但我想通过rpy2再次使用R。我已经确认,当我这样做时,我可以加载默认的包:

代码语言:javascript
复制
from rpy2 import robjects
plot = robjects.r.get('plot')

现在,当我尝试像这样加载外部包时,

代码语言:javascript
复制
from rpy2.robjects.packages import importr
betareg = importr('betareg')

我得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):

  File "<ipython-input-1-b1ed20534ab9>", line 1, in <module>
    runfile('C:/Users/Patrick/OneDrive/FIDS/betareg.py', wdir='C:/Users/Patrick/OneDrive/FIDS')

  File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
    execfile(filename, namespace)

  File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 71, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "C:/Users/Patrick/OneDrive/FIDS/betareg.py", line 11, in <module>
    betareg = importr('betareg')

  File "C:\Anaconda\lib\site-packages\rpy2\robjects\packages.py", line 438, in importr
    env = _get_namespace(rname)

RRuntimeError: Error in loadNamespace(name) : there is no package called 'betareg'

我设置了R_HOMER_USERR_LIBS系统变量,以确保R被加载并(希望)指向外部包所在的位置。当我将importr中的lib_loc kwarg设置为包文件夹的路径时,也会发生同样的事情。我可以使用与r2py相同的运行参数(-- library('betareg'),--no-save)通过R中的quiet从命令行加载包。

我是不是漏掉了什么?如何设置才能加载已安装的外部包?

版本信息

操作系统:

代码语言:javascript
复制
Microsoft Windows [Version 10.0.10240]

Python版本:

代码语言:javascript
复制
Python 2.7.10 |Anaconda 2.3.0 (64-bit)| (default, May 28 2015, 16:44:52)
[MSC v.1500 64 bit (AMD64)] on win32

R版本:

代码语言:javascript
复制
R version 3.2.0 (2015-04-16) -- "Full of Ingredients"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

rpy2版本:

代码语言:javascript
复制
>>>import rpy2
>>> rpy2.__version__
'2.6.3'
EN

回答 1

Stack Overflow用户

发布于 2018-05-21 14:04:13

要在Conda中使用外部R包,您需要在Conda中安装这些包。如果你从R安装它们,你就不能使用它们。要安装它(例如,对于dtw库),请执行以下操作:

代码语言:javascript
复制
import rpy2.robjects.packages as r
utils = r.importr("utils")
package_name = "dtw"
utils.install_packages(package_name)

输出为:

代码语言:javascript
复制
rpy2.rinterface.NULL

然后你就可以使用这个包了

代码语言:javascript
复制
import rpy2.robjects.numpy2ri
from rpy2.robjects.packages import importr
rpy2.robjects.numpy2ri.activate()

# Set up our R namespaces
R = rpy2.robjects.r

DTW = importr('dtw')   # our package
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32983365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档