如何正确设置rpy2?

How to correctly set up rpy2?

我正在尝试 运行 rpy2 但没有成功。安装 R 和 rpy2 后,我尝试按照 rp2 文档中的说明测试 rpy2:

来自空闲:

import rpy2.situation
for row in rpy2.situation.iter_info():
    print(row)

我得到以下输出:

rpy2 version:
3.3.2
Python version:
3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)]
Looking for R's HOME:
    Environment variable R_HOME: None
    InstallPath in the registry: C:\Program Files\R\R-4.0.0
    Environment variable R_USER: None
    Environment variable R_LIBS_USER: None
R version:
    In the PATH: None
    Loading R library from rpy2: cannot load library 'C:\Program Files\R\R-4.0.0\bin\x64\R.dll': error 0xc1
Additional directories to load R packages from:
None

我设置了输出中提到的未找到的环境变量,因为我认为可能是 R 的安装位置问题,但它仍然不起作用。我还寻找 R.dll 错误或一般 dll 文件错误的解决方案。

提前致谢!

看来你的Python版本是32位的,R版本是64位的。尝试链接到 bin\i386 而不是 bin\x64 文件夹中的 R。

您只需将 R.dll 库的位置(x64 或 i386 取决于您使用的是 python 32 还是 64)添加到路径中。

从你得到的错误来看,你的情况是这样的:C:/Program Files/R/R-4.0.0/bin/x64

这是一个常见问题observed with other libraries,解决方案很简单:

import os
os.environ['PATH'] = 'C:/Program Files/R/R-4.0.0/bin/x64' + os.pathsep + os.environ.get('PATH', '')
import rpy2.situation
for row in rpy2.situation.iter_info():print(row)

rpy2 version:
3.3.5
Python version:
3.7.4 (default, Aug  9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)]
Looking for R's HOME:
    Environment variable R_HOME: None
    InstallPath in the registry: C:\Program Files\R\R-4.0.0
    Environment variable R_USER: None
    Environment variable R_LIBS_USER: None
R version:
    In the PATH: 
    Loading R library from rpy2: OK
Additional directories to load R packages from:
None

您可以通过 conda 环境或 docker 图像使用 R 接口与 Python 集成。虽然 Docker 方法更容易设置,但 conda 方法主要是因为它允许您管理不同的环境,在本例中是使用 R 和 Python.

1。将 rpy2 与 Docker Image

一起使用

在您的系统上安装Docker Desktop 后,查看来自 Jupyter 的 link. You could use the datasciencenotebook 图像。只需在您的终端上输入

docker run -it -e GRANT_SUDO=yes --user root --rm -p 8888:8888 -p 4040:4040 -v D:/:/home/jovyan/work jupyter/datascience-notebook

如果这是第一次 运行 此命令,它将首先拉取 docker 图像。请注意,我们将本地目录 D:/ 作为卷安装到 docker 容器。为此,请在 Docker 桌面设置中 启用文件共享 ,请参见下图

然后,在 Jupyter Notebook 单元格中键入 import rpy2,rpy2 默认带有此图像。

2。在 Anaconda 环境中使用 rpy2

成功后installing Anaconda distribution,打开Anaconda提示符,创建一个新的conda环境,这里我称之为rpy2环境

conda create -n rpy2-env r-essentials r-base python=3.7

请注意,我为此环境包括了 R 和 Python 3.7。在撰写本文时,rpy2 尚不兼容 python 的最新版本。然后,激活您的环境并安装 rpy2

conda activate rpy2-env
conda install -c r rpy2

现在,您可以通过在终端或通过 Jupyter Notebook 输入 pythonipython 来使用 rpy2。

import rpy2.situation
for row in rpy2.situation.iter_info():
    print(row)

3。安装 R 包(可选)

另外,如果需要安装R包,可以在终端输入

R -e install.packages("package_name")

或在 Jupyter Notebook 中

import rpy2.robjects.packages as rpackages
from rpy2.robjects.vectors import StrVector

# Choosing a CRAN Mirror
utils = rpackages.importr('utils')
utils.chooseCRANmirror(ind=1)

# Installing required packages
packages = ('ggplot', 'stats')
utils.install_packages(StrVector(packages))