1

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

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

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 有什么建议吗?

4

2 回答 2

1

我不熟悉 R 包packrat,但我注意到 bash + R 和 Python/rpy2 代码有一个可能很重要的细微差别:在 bash + R 的情况下,当 R 启动时,它已经在你的 packrat 中项目目录,而在 Python/rpy2 案例中,R 从不同的目录开始,并使用setwd().

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

于 2018-11-28T00:51:03.617 回答
1

非常好的评论(隐藏文件 = 忘记的文件)。我发现了如何让它运行:

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,你让我很开心,非常感谢。

于 2018-11-28T09:24:16.560 回答