在packrat环境中如何使用rpy2?

时间:2018-11-27 21:46:10

标签: python r rpy2 packrat

我尝试使用我使用R包“ packrat”安装的R包,该R包允许在python中创建类似于virtuanlenv的虚拟环境。但是我没有成功。

在使用R的控制台中,我可以成功运行以下代码:

cd /path/to/packrat/environment
R # this launch a R console in the packrat environment
library(mycustompackage)
result = mycustompackage::myfunc()
q()

我想使用rpy2做同样的事情,但是我无法激活packrat环境。请按照我未成功测试的内容进行操作。

from rpy2.robjects import r
from rpy2.robjects.packages import importr

packrat_dir = r.setwd('/path/to/packrat/environment')
importr('mycustompackage')
result = r.mycustompackage.myfunc()

但是它在'importr'失败,因为它找不到包'mycustompackage'。要么不成功:

importr('mycustompackage', lib_loc='/path/to/packrat/environment')

都不:

os.environ['R_HOME'] = '/path/to/packrat/environment'
importr('mycustompackage', lib_loc ='/path/to/packrat/environment')  

关于在packrat环境中如何使用rpy2的任何建议?

2 个答案:

答案 0 :(得分:1)

我对R软件包packrat不熟悉,但是我注意到bash + R和Python / rpy2代码之间的细微差别可能很重要:在bash + R情况下,当R正在启动,它已经在您的packrat项目目录中,而在Python / rpy2情况下,R从另一个目录开始,并使用setwd()移动到packrat项目目录中。

我正在读取packrat正在使用文件.Rprofilehttps://rstudio.github.io/packrat/limitations.html),该文件在启动时由R在当前目录中进行评估。我怀疑问题归结于如何使用packrat而不是rpy2的问题。

答案 1 :(得分:0)

很好的评论(隐藏文件=忘记文件)。我发现了如何使其运行:

from rpy2.robjects import r
from rpy2.robjects.packages import importr

# Init the packrat environment
r.setwd('/path/to/packrat/environment')
r.source('.Rprofile')

# use the packages it contains
importr('mycustompackage')    
result = r.myfunc()

lgautier,您过得很愉快,非常感谢。