Reticulate:R + Python 实现互操作

R 语言和 Python 已成为数据科学科研工作人员的标准配置。现在,对于数据科学科研人员而言,R 语言Python 终于不再是一个二选一的方案。CRAN 已于2018年3月21日收录 reticulat 包(1.6版本),它包含了用于 Python 和 R 之间协同操作的全套工具,在 R 和 Rstudio 中均可使用。主要包括:

  1. 支持多种方式在 R 环境中调用 Python。包括 R Markdown、加载 Python 脚本、导入 Python 模块以及在 R 会话中交互式地使用 Python。
  2. 实现 R 和 Python 对象之间的转换(例如:R 和 Python 数据框、R 矩阵与 NumPy 数组之间)。
  3. 灵活绑定到不同版本的 Python,包括虚拟环境和 Conda 环境。

在 R 会话中嵌入了 Python 会话,从而实现了无缝的、高性能的互操作性。如果你是使用 Python 进行某些工作的 R 开发人员或使用两种语言的数据科学团队的成员,那么 reticulate 包可以极大地简化你的工作流程。

R Markdown 中应用 Python

reticulate 包内置了许多用于 Python 对象类型转换的方法,包括 NumPy 数组和 Pandas 数据框。 例如,你可以使用 Pandas 读取和操作数据,然后使用 ggplot2 轻松绘制 Pandas 数据框:

导入 Python 模块

可以使用 R 函数:import() ,导入任何 Python 模块:

importing python os module
Importing Python os module

可以通过 $ 运算符访问 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 互操作的教程:

GitHub地址项目GitHub地址