python 怎么调用R

Python调用R主要通过rpy2库实现,需先安装R≥4.0并配置PATH,再用pip install rpy2安装;支持R表达式执行、函数调用及数据结构互转。

Python 调用 R 主要通过 rpy2 库实现,它是 Python 与 R 之间最成熟、最常用的桥梁,支持 R 对象在 Python 中直接操作、R 函数调用、数据结构互转等。

安装 rpy2

rpy2 依赖本地已安装的 R 环境(需 R ≥ 4.0),安装前确保系统 PATH 中能调用 R 命令(终端输入 R --version 可验证)。然后执行:

  • pip install rpy2(推荐使用 pip,注意 Windows 用户可能需先装 Visual Studio Build Tools 或使用预编译 wheel)
  • 如遇编译错误,可尝试:pip install --only-binary=rpy2 rpy2

基础调用:运行 R 表达式

rpy2.robjects.r 可直接执行 R 代码字符串,返回 R 对象:

  • from rpy2.robjects import r
  • r('x → 返回 Python 中的 FloatVector,值为 2.0
  • 结果可进一步转为 Python 原生类型:list(r('c(1,2,3)'))[1.0, 2.0, 3.0]

数据互通:Pandas 与 R DataFrame 互转

rpy2 提供 rpy2.robjects.pandas2ri 模块简化数据转换:

  • 启用自动转换(推荐):from rpy2.robjects import pandas2ri; pandas2ri.activate()
  • Pandas DataFrame → R DataFrame:r_df = pandas2ri.py2rpy(df)
  • R DataFrame → Pandas DataFrame:df = pandas2ri.rpy2py(r_df)
  • 注意:列名含空格或特殊字符时,R 中会自动重命名(如转为点号),建议预先规范列名

调用 R 包函数(如 ggplot2、dplyr)

先用 rpy2.robjects.packages.importr 导入 R 包,再像调用 Python 模块一样使用:

  • from rpy2.robjects.packages import importr
  • base = importr('base')base.c(1, 2, 3) → R 的 c() 函数
  • ggplot2 = importr('ggplot2')ggplot2.qplot(1, 2) 可绘图(需配合 rpy2.robjects.lib.ggplot2 或手动处理图形设备)
  • R 包未安装时,可在 Python 中调用:base.install_packages('dplyr')

不复杂但容易忽略的是 R 环境路径和版本兼容性。rpy2 4.x 版本要求 R ≥ 4.0,旧版 R 需搭配 rpy2 3.x 使用。调试时可打印 rpy2.robjects.r('R.version.string') 确认实际加载的 R 版本。