先简要介绍下R语言:

R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman于1995设计出来(由于两人的名字均以 "R’ 字母开头,因此命名为R语言),现在由“R核心开发团队“负责开发。

虽然R主要用于数据分析、绘图以及数据挖掘,但也有人用作矩阵计算。其计算速度可媲美专用于矩阵计算的开源软件GNU Octave和商业软件MATLAB。

起初R主要在学术研究中使用,但近年来在企业界也表现突出,这使得R成为企业中使用的全球发展最快的统计语言之一。

我们看看什么情况下选R更好。

1.1 如果你的编程水平是菜鸟级,选R

如果你的编程经验有限,推荐先学R。

对于软件开发新手来说,Python可能不错,但是我认为R更适合数据科学新手。

但是数据科学和软件开发不是同一回事。

解释一下为什么。

这种差异可归结为:数据科学家使用编程语言的方式与软件开发者不一样。对于数据科学新手来说,程序(programs)应该是脚本(scripts),而不应该是软件(software)。

举个例子,我们用R语言处理一个叫Auto数据框(dataframe):

library(ISLR)

data('Auto')

如果对R不熟悉,代码的具体意义可暂时不理会。

数据框是R语言中最常用的数据类型之一,以行列的形式排布,有点类似Excel表格。

在这个Auto数据框中有个weight变量,表示汽车的重量。我们想利用它来创建一个以公斤为单位的新变量weight_kg。

有很多方法可以实现这个任务。最容易想到的方法是:利用for循环遍历weight变量中的值,然后计算出新变量的值。听起来有点麻烦。

其实我们可以利用tidyverse包中已有的mutate函数直接计算出新变量的值:

mutate(Auto, weight_kg=weight*0.45)

再次提示,代码的意义可先不理会。

这个方法避免使用for循环,更简单。事实上,在R中要实现某种功能,只要你知道要用哪个函数和哪个包,实现将会变得非常简单。

在R中,你应该尽量使用已有函数和包来完成相关任务,没必要自己创建工具来处理任务。这意味着你不需要知道很多传统意义上的编程概念。事实上你应该避免使用这些概念,比如:for循环、类、面向对象编程以及其它软件开发概念。

总之,相比Python,由于R的数据处理工具开发得更好且更容易使用,我认为R更适合做数据处理。

其实Python也有很多工具来直接处理数据,比如pandas包,但是Python的包和语法具有"软件开发’的味道,依赖于一些软件开发概念(像for循环、类和面向对象等等)。比如,当浏览一些Python书籍的时候,你仍会看到介绍for循环、类声明等。对于那些没有软件开发或计算机科学背景的新人来说,这些概念很难被理解。

相反,很多情况下即使没有任何编程经验,你也可以很好地使用R的各种工具。

1.2 对于数据科学任务,R的语法更直观形象

对于数据处理任务,很多时候R的语法会更简单。函数和参数的命名设计也更好,很容易记住和使用。

举个例子,我们将分别用R和Python来删掉Iris数据框中的两个变量(由于R和Python都有Iris数据框,因此我们使用这个数据框)。

Python的优势

对于数据科学初学者,尽管我强烈推荐学R,但也不是唯一的选择。

对于某些人,Python可能是最好的选择。下面讲一下哪些情况下选择Python更好。

2.1 如果你有软件开发或计算机科学基础,学Python

如果你曾经有软件开发经验或者你是计算机科学专业的话,我认为Python会更适合你。因为你已经有编程经验了,使用Python会让你更舒服。

2.2 想开发软件,学Python

我已经说了R更擅长数据科学。如果你想建立软件系统的话,我认为Python更合适。Python的闪光点就是写软件,效率很高。就像一些专家所说的那样,写Python代码就如同写伪代码。

此外,Python是一门通用语言,基本啥都能干。然而R比较专,只是擅长统计分析和可视化。

我想澄清一下,不是说R不能写软件。只是更多人喜欢用Python去建立产品软件。因此作为数据科学家,如果你想创立软件系统,我觉得Python比R更合适。

2.3 想搞机器学习,学Python

如果你想长期从事机器学习方面的研究,我建议你学Python。

其实R也有机器学习生态系统。特别地,R的caret 包开发得很好,它有能力完成各种机器学习任务。比如:使用caret包建立回归模型(regression model)、支持向量机(SVM)、决策树(包括回归和分类)以及执行交叉验证(cross validation)等等。总之,R的机器学习生态系统发展得很好。

但是,Python在机器学习方面的支持出现更早。为实现各种不同机器学习方法,Python的scikit-learn库提供了一套更加简洁和易读的语法。而R中caret包的语法有时有点拙劣。尤其,caret包与Tidyverse包兼容得不是很好,输出的结果有时也很难处理。相反,Python的scikit-learn库与Python生态环境整合得很好。

市面上有关机器学习的书籍,其算法实现很多都是用Python写的。

总之,如果你想致力于机器学习,我认为Python会更好。

r语言和python-r语言和python学哪个相关推荐

  1. python r语言培训_r语言和python学哪个

    先简要介绍下R语言: R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman于1995设计出来(由于两人的名字均以 'R' 字母开头,因此命名为R语言),现在由"R ...

  2. c语言和python先学哪个好,python和c语言先学哪个

    c语言和python先学哪个? c语言和python先学哪个都可以,C语言和Python只是语法不同,作为入门语言各有各的好处.从C语言入门,C语言是面向过程的语言,其语法结构及其严谨,且应用十分广泛 ...

  3. 简单比较python语言和c语言的异同-Python快速入门之与C语言异同

    原标题:Python快速入门之与C语言异同 代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达 ...

  4. go语言和java比_闲话Python, Go, Java

    简要介绍下笔者从业经历,2017年5月加入饿了么(Java),2019年6月加入字节跳动(Python & go),Python & go 还处于入门阶段,所以笔者的见解只能当闲话听听 ...

  5. python和r语言做大数据_R和python大数据

    数据科学界华山论剑:R与Python巅峰对决 如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习 ...

  6. 北京python r语言培训

    r语言和python的区别是Python与R相比速度要快,R中的数据结构非常的简单. 1.R中的数据结构非常的简单,主要包括向量一维.多维数组二维时为矩阵.列表非结构化数据.数据框结构化数据.而 Py ...

  7. python r语言 数据分析_Python V.S R语言?数据分析与挖掘该选哪一个?

    什么是R语言? R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的罗斯·伊哈卡和罗伯特·杰特曼开发(也因此称为R),现在由"R开发核心 ...

  8. r和python数据分析_R和python大数据

    数据科学界华山论剑:R与Python巅峰对决 如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习 ...

  9. python基础系列教程——python基础语法全解

    点击此处​​​​​​​ python教程全解 了解python 1.  了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象 ...

  10. 数据科学+python+R+数据库+机器学习+(速查表)cheat sheets大全

    数据科学+python+R+数据库+机器学习+(速查表)cheat sheets大全 Learn, compete, hack and get hired! 学习.竞争.精进.996. 东西永远学不完 ...

最新文章

  1. sj 网页前端与后台数据交互的3种方式
  2. Tomcat 7最大并发连接数的正确修改方法(转)
  3. 《数据结构》是计算机应用,《数据结构》期中测试-2014计算机应用技术用.doc
  4. python dendrogram_【聚类分析】《数学建模算法与应用》第十章 多元分析 第一节 聚类分析 python实现...
  5. Java多线程编程-(4)-线程间通信机制的介绍与使用
  6. Spark Mllib里的如何对两组数据用斯皮尔曼计算相关系数
  7. dvt高危患者的护理措施_dvt的预防及护理
  8. 【303】C# 复制窗体 修改名称
  9. windows10下安装JDK及环境变量设置
  10. linux输入不显示的处理 stty echo
  11. 云栖社区 mysql_mysql
  12. 维护建议--数据库备份
  13. BZOJ2134 单选错位
  14. Linux多线程编程
  15. 大数据之路-阅读笔记
  16. 关于Select option默认选中及查询后选项值保留的问题
  17. 递推练习之费解的开关
  18. 理解设计模式中的工厂模式
  19. 家用宽带搭建个人服务器(二)
  20. 分层强化学习:基于选项(option)的强化学习/论文笔记 The Option-Critic Architecture 2017 AAAI

热门文章

  1. Redis cluster
  2. 在使用添加按钮给table插入新的一行时遇见的问题总结及处理方法
  3. postman设置测试环境
  4. iOS-开启arc之后 NSNotificationCenter removeObserver 是否需要调用
  5. IDEA下JNI开发快速生成头文件方法
  6. redis添加认证密码
  7. 到底什么时候该使用MQ 1
  8. Android自带语音播报+讯飞语音播报封装(直接用)
  9. 【bzoj 3495】PA2010 Riddle
  10. 使用Struts2防止表单重复提交