R 和 Python 有很多相似之处,也有很多不同之处。两种语言的数据结构的大多数基础概念都非常相似,并且现在这两种语言都有许多数据科学包可用。
但 R 的设计在我看来是“数据第一,应用第二”,而 Python 从一开始就给人感觉更多是应用程序开发驱动的。例如,纯粹从语法和环境管理的角度来看,Javascript 程序员上手 Python 的速度要比上手 R 的速度快一些。
最近,我在工作中用到 R 和 Python 的次数越来越多,并且遇到了想要同时使用两者的情况。出现这种情况的原因有很多,但最常见的一个场景是你正在用 R 构建某些东西,同时需要自己或其他人之前用 Python 编写的功能。当然,你可以用 R 重写它,但这不是很 DRY 吗?
R 中的 reticulate 这个包让你可以在 R 会话中执行 Python 代码。它实际上已经出来几年了,并且一直在不断改进,所以我想写一个关于它具体用法的简短教程。
如果你是 R 的开发者,要启动和运行 reticulate 需要你了解一些 Python 的运行机制—以及它管理环境的典型做法—所以本教程可以帮助你更快地完成设置,这样就不用你自己去费劲研究了。
R 和 Python 中的环境
任何编程项目都运行在一个环境中,它在这个环境里存储和访问自己在执行过程中需要或创建的所有东西。在 R 中,所有项目都可以使用一个通用的全局环境,在这个环境里可以访问 R 基础语言和所有已安装的包。从这个意义上说,R 中的所有项目通常都运行在相同的公共核心环境中。
换一种方式来看待这个景象,你可以想象你家中所有成员的 iPhone 都共享同一个充电站;他们必须离开自己的房间给手机充电;如果他们出售自己的 iPhone,买家需要自己解决充电问题。
但在 Py