天天看点

《R的极客理想—工具篇》—— 1.1 R是最值得学习的编程语言

本节书摘来自华章出版社《r的极客理想—工具篇》一 书中的第1章,第1.1节,作者:张丹,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

问题

为什么要学r语言?

《R的极客理想—工具篇》—— 1.1 R是最值得学习的编程语言

引言

如果要问在node、lua、python、ruby和r这5种语言中,哪个语言在2014年的应用前景会更好,我会毫不犹豫地选择r,而且我认为r语言不仅是2014年,也是以后更长一段时间内的明星。在本书开篇,我们就谈谈为什么r语言是最值得学习的编程语言。

本人是程序员、架构师,从编程入门到今天,一直深信着java是改变世界的语言,java已经做到了,而且一直很辉煌。但当java越来越强大,覆盖领域越来越多,变得无所不能的时候,它反而不够专业,这就给了其他语言发展的机会。

我已使用java语言11年,r语言3年,node 1年,对于这个问题 “哪个语言在2014年的应用前景会更好”,我选择r语言。

从下面的9个方面来说明我选择r的原因。

r的基因

r的发展

r的社区和资源

r的哲学

r的使用者

r的语法

r的思维模式

r解决的问题

r的不足

1992年,新西兰奥克兰大学的ross ihaka和robert gentleman 两位统计学家,为了方便教授初等统计课程,发明了一种编程语言,因为他们名字的首字母都是r,于是r便成为这门语言的名称。

从开始学习r语言,我就开始了知识的跨界思考。统计学基于概率论,概率论又基于数学,用计算机的方式编程,同时解决某个领域的实际问题。多种学科知识的交集,决定着我们解决问题的能力。统计的基因,让r语言与众不同!

r一直在小众领域成长着,最早也只有统计学家在用,主要用来代替sas做统计计算。然而时代在进步,随着大数据的爆发,r终于在这一波浪潮中被工业界所发现。然后,越来越多有工程背景的人加入到这个圈子,对r的计算引擎、性能以及各种程序包进行改进和升级,让r获得了新生。

我们现在用到的r语言软件,已经越来越接近工业软件的标准了。由工程师推动的r的发展,其速度远远地超过了由统计学家推动的发展。随着人们对数据分析需求的进一步增加,r会以更快的速度继续发展,将成为免费的、开源的数据分析软件的代名词。

r的发展离不开r的各种社区支持,尤其是r的官方社区支持。在r的官方网站中,我们可以下载到r语言软件、r的第三方软件包和r的其他支持软件。当然,我不得不承认r的官方网站从web页上看起来太简陋了,稍微调整一下css样式表,都会比现在好看很多。也许这种简单、无修饰也是统计学家的基因吧。r语言的社区资源同其他语言一样丰富,除了官方社区,还有开发者论坛、r-journal列表、软件包列表、r语言图书列表以及r用户组等。

r是自由软件,因此开发者可以开发自己的软件包,封装自己的功能,然后在cran上面发布。截止到2014年2月,共有5236个r包在cran上面发布。可能很多人会说只有5236个包,数量太少了。这是因为cran是需要提交申请的,每个包都必须经过r语言小组审核、检查后才会发布出来,而且审核非常严格。高质量是发布一个新的r包的基本要求。由于cran过于严格的审查,让很多开发者选择在rforge上发布r包,还有些r包是基于github发布的,我也在github上面发布了自己的r包 。

每种语言都有自己的设计理念和哲学,而我体会的r的哲学就是“静下心做事情”。r不需要很长的代码,也不需要设计模式。一个函数调用,传几个参数,就能实现一个复杂的统计模型。我们需要思考的是用什么模型、传什么参数,而不是怎么进行程序设计。我们可能会用r实现“从一个数学公式,变成一个统计模型”的过程,我们也可能会考虑“如何让一个分类器结果更准确”,但我们不必思考一个算法的“时间复杂度是多少,空间复杂度是多少”。

r的哲学,可以让你把数学和统计学的知识,变成计算模型,这也是r的基因所决定的。

r语言早期主要是学术界统计学家在用,后来逐渐被其他很多领域的学者所用。r语言有各种不同的应用领域,包括统计分析、应用数学、计量经济、金融分析、财经分析、人文科学、数据挖掘、人工智能、生物信息学、生物制药、全球地理科学、数据可视化等。

近几年,由互联网引发的大数据革命让工业界的人开始认识r,加入r。当越来越多的有工程背景的人加入到r语言使用者的队伍后,r才开始向着全领域发展,逐步实现工业化的要求。现在,r已不仅仅是学术界的语言,它还是工业界必备的语言。

下面列出一些推动r语言在工业界发展的r包。

revolutionanalytics公司的rhadoop产品,让r可以直接调用hadoop集群资源。

rstudio公司的rstudio产品,给了我们对编辑软件新的认识。

rmysql、roracle、rjdbc打通了r和数据库之间的访问通道。

rmongodb、rredis、rhive、rhbase、rcassandra打通了r和nosql数据库之间的访问通道。

rmpi、snow打通了单机多核并行计算的通道。

rserve、rwebsocket 打通了r语言的跨平台通信的通道。

r是面向对象语言,语法如同python。但r的语法很自由,很多函数的名字看起来都是那么随意,这也是r的哲学的一部分吧!例如,看到如下这样的赋值语法,有其他语言基础的程序员,肯定会崩溃的。

随机取正态分布n(0,1)的10个数,又是这么的简单。

用r画鸢尾花的数据集的散点图,有非常好的可视化效果。

输出结果见图1-1。

《R的极客理想—工具篇》—— 1.1 R是最值得学习的编程语言

正是因为r自由的哲学,让r的语法独特而简洁,我已经喜欢上这种哲学了。

r语言让我跳出了原有的思维定式。使用r语言,我们应该像统计学家那样思考问题,而不是拘泥于程序员的思维模式。统计学家的思维模式,是先考虑为什么,再考虑做什么。而程序员的思维模式,是直接考虑怎么做,等有了结果再考虑为什么。

r语言是直接面向数据的语言。在我们的日常生活中,无论做什么事情都会产生数据,上网有浏览数据,买东西有消费数据,就算什么都不干,也会受大气pm2.5的影响,有空气污染指数数据。利用r语言,我可以直接分析这些数据。面向什么业务,就分析什么数据,不需要从产品经理向程序员的角色转换,不需要考虑有什么功能,更不需要考虑程序设计的事。跳出程序员的思维模式,我们所能认知的东西会更多,于是也能找到更适合自己的定位。

当数据成为生产资料的时候,r就是为人们能运用生产资料创造价值的生产工具,r语言主要解决的是数据的问题。整个人类文明所获得的全部数据中,有90%以上是自互联网诞生以来产生的;当hadoop帮助人们解决了大数据存储的问题后,如何发现数据的价值,则成为当前最火的话题。r语言具有强大的统计分析能力,这就让它成为数据分析最好的工具。所以,r要解决的问题,就是如何挖掘数据价值的问题。

尽管前面说了r的各种优点,但我们依然不能说r就是完美无缺的,因为r也有很多不足。具体来说,r的缺点有下面5个。

r软件是统计学家编写的,并不如软件工程师编写的软件那么健壮。

r软件的性能,存在一些问题。

r语言很自由,语法命名不太规范,需要花时间熟悉。

r语言的内核编程,要比普通的r包使用,难度大得多。

r语言结合了很多数学、概率、统计的基础知识,学起来有一定门槛。

r的这些不足,都是可以克服的。当有更多有工程背景的人加入的时候,r语言会比现在更强大,会帮助使用者创造更多的价值。

r可以做所有sas能做的事情。sas系统全称为statistics analysis system,是国际上最知名的商业分析软件工具之一。sas用于决策支持的大型集成信息系统,其重要组成部分和核心功能是统计分析功能。在数据处理和统计分析领域,sas系统被誉为国际上的标准软件系统,堪称统计软件界的巨无霸。

r和sas处于完全的竞争的关系中,r的免费和开放,让r有着更广阔的应用前景。下面给出当今r应用最热门的领域。

统计分析:统计分布、假设检验、统计建模。

金融分析:量化策略、投资组合、风险控制、时间序列、波动率。

数据挖掘:数据挖掘算法、数据建模、机器学习。

互联网:推荐系统、消费预测、社交网络。

生物信息学:dna分析、物种分析。

生物制药:生存分析、制药过程管理。

全球地理科学:天气、气候、遥感数据。

数据可视化:静态图、可交互的动态图、社交图、地图、热图、与各种javascript库的集成。

本书会介绍r语言在统计分析、金融分析、数据挖掘、推荐系统、社交网络等领域的应用。r有着非常广阔的应用前景,而且r也将成为新一代的最有能力创造价值的工具。

r语言是在大数据时代被工业界了解和认识的语言,r语言被时代赋予了挖掘数据价值、发现数据规律以及创造数据财富的任务。r语言也是帮助人们发挥智慧和创造力的最好的生产工具,因此我们不仅要学好r语言,还要用好r语言,为社会注入更多的创新的生产力。

总而言之,在这5种语言中,r是最特殊的,r被赋予了与其他语言不同的使命。r的基因决定了r将成为2014年,也可能是以后更长一段时间的明星。因此我认为“r是最值得学习的编程语言”。不论你正在读书,还是已经工作,掌握r语言这个工具并找最适合自己的位置将会前途无量。