我尝试使用一个R包,这个R包是使用R包'packrat‘安装的,它允许创建一个类似于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有什么建议吗?
发布于 2018-11-28 08:51:04
我不熟悉R包packrat,但我注意到bash +R和Python/rpy2代码有一个细微的差别,这可能很重要:在bash +R的情况下,当R启动时,它已经在您的packrat项目目录中,而在Python / rpy2的情况下,R从不同的目录开始,并使用setwd()移动到packrat项目目录中。
我读到packrat正在使用一个文件.Rprofile (https://rstudio.github.io/packrat/limitations.html),如果在当前目录中,则在启动时由R评估。我怀疑问题在于packrat的使用方式,而不是rpy2的问题。
发布于 2018-11-28 17:24:17
非常好的注释(隐藏文件=被遗忘的文件)。我发现了如何让它运行:
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,你让我很开心,非常感谢。
https://stackoverflow.com/questions/53508674
复制相似问题