R 语言和 Python 已成为数据科学科研工作人员的标准配置。现在,对于数据科学科研人员而言,R 语言与 Python 终于不再是一个二选一的方案。CRAN 已于2018年3月21日收录 reticulat 包(1.6版本),它包含了用于 Python 和 R 之间协同操作的全套工具,在 R 和 Rstudio 中均可使用。主要包括:
- 支持多种方式在 R 环境中调用 Python。包括 R Markdown、加载 Python 脚本、导入 Python 模块以及在 R 会话中交互式地使用 Python。
- 实现 R 和 Python 对象之间的转换(例如:R 和 Python 数据框、R 矩阵与 NumPy 数组之间)。
- 灵活绑定到不同版本的 Python,包括虚拟环境和 Conda 环境。
在 R 会话中嵌入了 Python 会话,从而实现了无缝的、高性能的互操作性。如果你是使用 Python 进行某些工作的 R 开发人员或使用两种语言的数据科学团队的成员,那么 reticulate 包可以极大地简化你的工作流程。
R Markdown 中应用 Python
reticulate 包内置了许多用于 Python 对象类型转换的方法,包括 NumPy 数组和 Pandas 数据框。 例如,你可以使用 Pandas 读取和操作数据,然后使用 ggplot2 轻松绘制 Pandas 数据框:
导入 Python 模块
可以使用 R 函数:import() ,导入任何 Python 模块:

可以通过 $ 运算符访问 Python 模块和类中的函数和其他数据(类似于与 R 列表,环境或引用类进行交互的方式)
引用 Python 脚本
可以使用函数:source_python() 获取任何 Python 脚本,就像使用 R 脚本一样。
Python REPL
如果你想以交互方式使用 Python,则可以调用函数:repl_python(),该函数提供了嵌入在 R 会话中的 Python REPL。 在 Python REPL 中创建的对象,可以通过 reticulate 导出 py 对象,并在R中进行调用:
数据类型转换
当调用 Python 时,R 数据类型会自动转换为它们等效的 Python 类型。 当值从 Python 返回到 R 时,它们会被转换回 R 类型。 类型转换关系如下:
最后,你可以从 reticulate 网站上了解更多关于 R 语言与 Python 互操作的教程:
- Calling Python from R : 介绍从 R 访问 Python 对象的各种方法以及可用于更高级的交互和转换行为的函数。
- R Markdown Python Engine : 提供有关在 R Markdown 文档中使用 Python 块的详细信息,包括如何从 R 块调用 Python 代码,反之亦然。
- Python Version Configuration Python 版本配置 : 描述用于确定 R 会话中使用哪个版本的 Python 的工具。
- Installing Python Packages : 有关从 PyPI 或 Conda 安装 Python 软件包的文档,以及使用 virtualenvs 和 Conda 环境管理软件包安装的文档。
- Using reticulate in an R Package : 在 R 软件包中使用 reticulate 的准则和最佳实践。
- Arrays in R and Python : 深层次讨论 R 和 Python 中数组之间的差异以及对转换和互操作性的影响。