首页游戏资讯为什么在R和Python之间抉择?

为什么在R和Python之间抉择?

misa2 04-13 4次浏览 0条评论

今日份常识你摄进了么?

R和Python有许多类似之处,也有良多差别之处。两种语言之间的数据构造的大大都根本概念都十分类似,而且如今有许大都据科学包以那两种语言存在。但是R的设置体例我认为是“数据第一,利用法式第二”,而Python从一起头就觉得更多的是利用法式开发。例如,地道从语法和情况治理的角度来看,Java法式员插进Python比插进R的速度要快一些。

为什么在R和Python之间选择?

图片来自Adi Goldstein via Unsplash.com

我越来越多地利用R和Python工做,我碰着过想同时利用那两种语言的情状。呈现那种情状的原因有良多,但最常见的是你正在用R构建一些工具,而且需要你或其别人以前用Python编写的功用。当然,你能够用R重写它,但那不是很枯燥吗?

R中的reticulate包容许你在R会话中施行Python代码。它现实上已经存在了几年而且不断在不竭改进,所以我想写一个简要的教程来介绍它是若何工做的。假设你是R的原生用户,成立和运行reticulate需要你对Python的工做原理有一些领会——以及它凡是若何停止情况治理—— 因而,本教程可能会搀扶帮助你更快地设置好它而不是你本身往处理。

R和Python中的情况

任何编程项目都是在特定情况中运行的,它在情况中存储和拜候所有需要的工具或在施行过程中创建的工具。在R中,所有项目都能够利用一个通用的全局情况,在那个情况中能够拜候R的根底语言和所有已安拆的包。从那个意义上说,R中的所有项目凡是都在统一个公共核心情况中运行。考虑那个问题的一种办法是想象一下,你家里的每小我都共用一个iphone充电中心。他们必需分开房间给手机充电,假设他们要出卖手机,买家需要本身处理充电安放。

然而,在Python中,每个项目凡是都被设置为完全独立的——有它本身的运行情况、本身的Python根底副本以及它需要施行的所有模块的独立副本。你能够把它想象成每小我在他们的房间里都有本身的iPhone充电器。他们不需要走到外面在其他处所充电,假设他们卖了手机,它就装备本身的充电器。

Python模子在安拆过程和磁盘/内存资本方面更高贵,但它容许以起码的设置装备摆设在小我之间更轻松地转移项目,因而不难看出它是若何更间接地从软件开发思维形式中生长起来的,那就是为什么我认为Python更“利用法式驱动”。在那里我应该指出,我所描述的关于那些语言的大大都日常用户来说都是“典型的”。它不是通用的,假设你晓得若何利用那两种语言来完成那两品种型的项目工做流是可能的。我们还看到了R语言比来更多地转向python风气的情况治理模子——例如利用renv包。

展开全文

下面是我绘造的一个小图表,简单地阐了然R和Python情况凡是工做体例之间的区别。

为什么在R和Python之间选择?

R和Python中的典型情况工做流(做者生成)

如今,假设你想让Python与R对话,它仍然需要找到它的情况——你不克不及让它拜候R的全局情况。那就像让一个说英语的人向一个说汉语的人问路一样。

因而,要让Python在你的R项目中工做,你需要做两件事:

设置Python情况

从如今起头,我将利用一个简单的例子。假设我在RStudio中有一个R项目,它需要利用我用Python编写的函数。那里有一个简单的函数,我将它保留在一个名为light_years.py的Python脚本中,该脚本位于我的R项目目次test_python中 (是的,RStudio容许你创建Python脚本!)那个函数将千米或英里做为输进,并计算以光速走完那段间隔需要几年——换句话说,光年的间隔是几:

def light_years(dist, unit = "km") : c_per_year = c * 60* 60* 24* 365.25ifunit == "km": dist_meters = dist * 1000elif unit == "mi": dist_meters = dist * 1.60934* 1000else: sys. exit( "Cannot use that unit!") returndist_meters/c_per_year

为了让文章更曲看,我在那里利用了一个十分简单的函数示例,所以它有点不现实,也有点愚笨,因为我导进了整个scipy包只是为了获取一个常量的值,但期看它能搀扶帮助你理解那个概念。

如今正如我们上面讨论的,我们需要为那段代码供给一个情况。它需要:

为R项目搭建Python情况其实不难。考虑到Python中项目情况的重要性,存在许多易于利用的情况治理东西。

我最喜好的是Anaconda。有两个版本可供抉择。完全版包罗了一个情况可能需要的所有工具,包罗所有最常用的Python模块。还有Miniconda,它占用更少的磁盘空间,并且更合适有限的Python用户。你能够在那里获得适用于你的操做系统的Miniconda。确保你下载的是对应Python版本的Conda。

安拆了Conda后,假设你利用的是MacOS或Linux,你凡是会利用号令行设置情况。只需在末端中切换到你的R项目目次 (在我的例子中是test_python),然后利用以下号令:

就那么简单,你如今创建了一个python情况。我凡是将我的情况定名为与项目文件夹不异的名称,以制止将来的稠浊。

如今你需要告诉Conda在那个项目中利用那个情况,所以当你仍然在号令行中的test_python目次下,利用以下号令:

如今,你已经将那个项目链接到Python情况,此中有一个Python库的副本,供你的代码运行。

最初,我们的函数需要scipy包,所以我们需要在情况中利用它。那就像在激活的项目文件夹中输进以下内容一样简单:

然后Conda将安拆scipy和它认为可能需要的所有依靠项到你的活动情况中,然后你就能够起头工做了——能够说像scipy一样简单。

如今,稍后你需要告诉R在那个情况的哪里能够找到Python,所以假设你利用那个号令,就能够得到一个所有情况的列表以及安拆情况的途径:

例如,那告诉我,我的情况安拆在/Users/keithmcnulty/opt/miniconda3/envs/test_python。我老是能够在bin子目次中找到Python可施行文件,所以我项目标Python可施行文件的完全途径是/Users/keithmcnulty/opt/miniconda3/envs/test_python/bin/python3,因为我利用的是Python 3。那就是我们需要告诉R在哪里能够找到Python情况的所有内容。

在R中运行Python函数

如今,无论你是像我利用Conda那样设置了Python情况,仍是利用了virtualenv,你都已经完成了最难的部门。剩下的就很简单了,因为reticulate包会处理它。

起首,当R加载你的项目时,你需要告诉它在准确的情况中到哪里往找Python可施行文件。为此,启动一个空文本文件并添加以下内容,将我的途径替代为你创建的项目情况中与Python可施行文件婚配的任何途径。

如今将那个文本文件保留在你的项目目次中,并将其定名为renv。那是一个隐躲文件,每当你在RStudio中启动你的项目时,R城市施行它。所以如今封闭RStudio并在翻开你的test_python项目标情状下重启它,它如今将指向Python情况。

假设你还没有安拆reticulate R包,如今应该安拆它。安拆完成后,你能够在末端中做一些测试,看看一切能否一般。

起首,你能够测试R能否晓得Python在哪里。reticulate::py_available应该返回"TRUE"。你还能够测试所需的Python模块能否已安拆:reticulate::py_module_available("scipy")应返回"TRUE"。假设所有那些都能一般工做,你就能够把你的函数引进R了。

起首,你能够测试R能否晓得Python的位置。reticulate::py_available应该返回“TRUE”。你还能够测试你所需的Python模块能否已安拆:reticulate::py_module_available(“scipy”)应返回“TRUE”。假设所有那些都能一般工做,你就能够把你的函数引进R中了。

你能够利用以下简单的号令获取Python脚本的源代码:

如今light_years函数能够做为R函数利用了。让我们看看以光速飞翔一万万亿英里需要几年:

好了!显然,那是一个十分简单的例子,但它确实告诉了你若何将Python代码集成到R脚本中的所有内容。你如今能够想象若何引进目前仅限python的各类功用或包,并使它们在R中工做——十分令人兴奋。假设你想查看一些关于若何利用reticulate将Python和R连系在一路的高级示例,请查看我的文章:在统一个项目中实现R和Python之间无缝工做的五种办法、生成参数化Powerpoint文档和在R中运行XGBoost。

原文做者:Keith McNulty

翻译做者:马薏菲

美工编纂:过儿

校对审稿:Chuang

原文链接:

本周公开课预告

数据科学家或将成为汗青?——无代码数据科学的降生

那六个SQL小身手,让你的阐发效率突飞猛进!

数据科学面试中的机器进修问题类型以及若何预备那些问题?

每个数据科学家都必需遵照的身手

打好数据科学和机器进修的根底——6本书带你学数学

点「在看」的人都变都雅了哦

隐藏文件软件
WordPress建站之若何从歹意重定向歹意软件黑客进攻中恢复 ok兔儿童下载
相关内容
发表评论

游客 回复需填写必要信息