摘要:◆ ◆ ◆ 序言 在Python中调用R或在R中调用Python,为什么是“和”而不是“或”? 在互联网中,关于“R Python”的文章,排名前十的搜索结果中只有2篇讨论了一起使用R和Python的优点,而不是把这两种语言对立起来看。
◆◆◆
序言
在Python中调用R或在R中调用Python,为什么是“和”而不是“或”?
在互联网中,关于“R Python”的文章,排名前十的搜索结果中只有2篇讨论了一起使用R和Python的优点,而不是把这两种语言对立起来看。这是可以理解的:这两种语言从一开始都具有非常显著的优缺点。从历史上看,尽管把两者分割开来是因为教育背景:统计学家们倾向用R,而程序员则选择了Python语言。然而,随着数据科学家的增加,这种区别开始变得模糊起来:
数据科学家就是这样一种人:软件工程师中最懂统计学,统计学家中最会编程的人。 - josh_wills在推特上这样说到。
由于这两种语言各自提供大量独特的库资源,对能够利用这两种语言的相对优势的数据科学家的需求正在不断增长。
◆◆◆
Python与R的对比
在以下领域中,Python 比R 更有优势:
网络爬虫和数据抓取:虽然R中的rvest已经简化了网页抓取, Python的beautifulsoup和Scrapy更加成熟,并提供更多的功能。
数据库连接:虽然R有大量的用于连接到数据库的选项, Python的sqlachemy只用了一个程序包就提供了所有的数据库连接功能,并可广泛用于生产环境。
而在以下领域中,R比Python更有优势:
统计分析选项:尽管Python的SciPy和 Pandas以及 statsmodels的组合提供了很大的一套统计分析工具,而R是专门围绕着统计分析应用等创建的,因此提供了更多的相关工具。
交互式图像或控制板:bokeh, plotly和intuitics最近都把Python的图形使用扩展到了Web浏览器,但是举个使用shiny的例子,R中的shiny 控制面板运行速度更快,而且往往需要更少的代码。
此外,由于数据科学团队现在拥有一个比较广泛的技能库,任何应用程序所选择的编程语言都可能用到以前的知识和经验。对于一些应用,特别是原型设计和开发应用,人们使用他们已知的工具则速度会更快。
纯文本 的“Air Gap(网闸)”策略
指在完全断开网络物理连接的基础上,实现合法信息的共享。本文中指用纯文本文件实现两种语言间代码的共享——译者注。
使用纯文本作为两种语言之间的物理隔离,你需要按如下步骤进行。
从命令行中重构你的R和Python脚本,并接受命令行参数。
输出共享数据到公共文件格式。
在一种语言中执行另一种语言,按要求传递参数。
优势:
最简单的方法,通常最快
可以轻松查看中间输出结果
已有常见文件格式,如: CSV , JSON , YAML的解析器
劣势:
需要事先商定一个共同的模式或文件格式
如果流程变长的话,难以管理中间输出结果和路径
如果数据量变大,本地磁盘读写将成为瓶颈
命令行脚本
通过Windows 或Linux终端环境命令行运行R和Python脚本类似。要运行的命令被分解成以下部分:
其中
是可执行的命令 (R代码中是 Rscript, Python代码中是Python)
是执行脚本所在的完整或相对文件路径。需要注意的是,如果在路径名中有空格,整个文件路径必须用双引号括起来。
这是空格分隔的参数列表用来解析脚本本身。请注意,这些不能作为字符串传递。
例如,打开一个终端环境并运行R脚本,命令如下:
Rscript path/to/myscript.R arg1 arg2 arg3