说说R语言的那些事儿

1. 历史

R(R Development Core Team, 2011)语言由新西兰奥克兰大学的 Ross Ihaka 和 Robert Gentleman 两人共同发明,其词法和语法分别源自 Scheme 和 S 语言,R 语言一般认为是 S 语言(John Chambers, Bell Labs, 1972)的一种方言。R 是“GNU S”, 一个自由的、有效的、用于统计计算和绘图的语言和环境,它提供了广泛的统计分析和绘图技术:包括线性和非线性模型、统计检验、时间序列、分类、聚类等方法。我们更倾向于认为 R 是一个环境,在 R 环境里实现了很多经典的、现代的统计技术。

2. 现状及应用

R 语言在国际和国内的发展差异非常大,国际上 R 语言已然是专业数据分析领域的标准,但在国内依旧任重而道远,这固然有数据学科地位的原因,国人版权概念薄弱以及学术领域相对闭塞也是原因。那为什么 R 语言能够被广大的数据分析工作者做接受?这其中原因是很多的:

2.1 优势及特点

从 R 语言的发展历史上看,R 主要是统计学家为解决数据分析领域问题而开发的语言,因此 R 具有一些独特的优势:

    install.package("ggolot2")
    library(ggplot2)

统计学家和几乎覆盖整个统计领域的前沿算法(3700+ 扩展包)
开放的源代码(free, in both senses),可以部署在任何操作系统,比如 Windows, Linux, Mac OS X, BSD, Unix强大的社区支持
高质量、广泛的统计分析、数据挖掘平台
重复性的分析工作(Sweave = R + LATEX),借助 R 语言的强大的分析能力 + LaTeX 完美的排版能力,可以自动生成分析报告
方便的扩展性
可通过相应接口连接数据库,如 Oracle、DB2、MySQL
同 Python、Java、C、C++ 等语言进行互调
提供 API 接口均可以调用,比如 Google、Twitter、Weibo
其他统计软件大部分均可调用 R,比如 SAS、SPSS、Statistica等
甚至一些比较直接的商业应用,比如 Oracle R Enterprise, IBM Netezza, R add-on for Teradata, SAP HANA, Sybase RAP(刘思喆,2012)

2.2 荣誉

R 语言拥有这么多优势,很大部分原因是由于它同样继承了 S 语言的优秀血统。S 语言在1998 年被美国计算机协会(ACM)授予了软件系统奖,这是迄今为止众多统计软件中“唯一”被 ACM 授予的统计系统。

当时 ACM 是这样评价S 语言的:

永久的改变了人们分析、可视化、处理数据的方式;
是一个优雅的,被广泛接受的,不朽的软件系统。
我们也可以查询到历年 ACM 授予软件系统奖的列表,这些优秀的软件系统同我们的生活息息相关:

1983 Unix
1986 TeX
1989 PostScript
1991 TCP/IP
1995 World-Wide-Web
1997 Tcl/Tk
1998 S
1999 The Apache Group
2002 Java
2009 年纽约时报发表了题为 “Data Analysts Captivated by R’s Power” 的社评,集中的讨论了 R 语言在数据分析领域的发展,并引发了 SAS 和 R 用户广泛而激烈的争论。接下来的 2010 年,美国统计协会(American Statistical Association)又将第一届“统计计算及图形奖” 授予了 R 语言,用于表彰其在统计应用和统计研究广泛的影响。

2.3 社团及活动

正如前文 John Chambers 所说,R 也是一个社区,其线下的活动也是非常活跃。在国际上,欧洲和美国每年会轮值举办一次 useR! 会议,届时来自于世界各地的 R 用户齐聚一堂,讨论 R 语言的应用与科研方面的成果。出于对统计计算的特殊考虑,每两年还会举办一次 DSC 会议(Directions in Statistical Computing),专门讨论 R 在统计计算方面的应用及理论研究。各大城市也会有相应的 R Group,方便本地的R 用户聚会及交流。

在国内,每年会以统计之都牵头在北京和上海举办两次中国 R 语言会议,至今年已经在中国人民大学、华东师范大学等高校举办了四届 R 语言会议,历年的演讲主题涉及医药、金融、地理信息、统计图形、数据挖掘、制药、高性能计算、社会学、生物信息学、互联网等多个领域,从明年起,台北将成为第三个举办中国 R 语言会议的城市,2012 年6月的中华 R 语言会议台北场已经在筹划当中。

2.4 业界的认可

KDnuggets 网站每年都会做一些数据分析、数据挖掘方面的专题问卷调查,在 2011 年 8月份的数据挖掘领域语言流行度的调查中,R 语言位于数据挖掘领域居于所有语言之首(图2),而紧随其后的SQL、Python、Java 则是在某一领域具有各自的独到优势。在数据挖掘范畴下,R 语言同这些语言相互补足、相得益彰。

根据互联网搜索结果计算的TIOBE 编程社区指数(Programming Community Index)(TIOBE, 2011)可能更能代表编程语言的流行度。在 2011 年 12 月份排名中,R 语言依旧是在统计领域中最为流行的语言,位列第 24(Ratings 0.522%),而时常被放在一起比较的SAS 则排名第 31(0.417%)。

图2: 虽然KDnuggets 网站的调查存在样本有偏的嫌疑,但毕竟代表了某一类人群的偏好。并 且排名前五位的语言在各自的领域确有代表性。
数据来源http://www.kdnuggets.com/2011/08/poll-languages-for-data-mining-analytics.html

3. 挑战和未来

虽然 R 语言有诸多的优势,但 R 语言不是万能的,它毕竟是统计编程类语言。受到其算法架构的通用性以及速度性能方面的影响,因此其初始设计完全基于单线程和纯粹的内存计算。虽然一般情况下无关 R 的使用,在当今大数据条件下,这两个设计思路的劣势逐渐变得愈加刺眼,好在 R 的一些优秀的扩展性包解决了上述问题,比如:

snow 支持MPI、PVM、nws、sockets 通讯,解决单线程和内存限制;
multicore 适合大规模计算环境,主要解决单线程问题;
parallel R 2.14.0 版本增加的标准包,整合了snow 和multicore 功能;
R + Hadoop 在Hadoop 集群上运行R 代码,亦或操作Hive 仓库;
RHIPE 更友好的R 代码运行环境,解决单线程和内存限制;
Segue 利用Amazon’s Web Services(EC2)。
这里需要着重提一下 parallel 包,这个包是 R 核心团队为了解决大数据计算问题而在标准安装程序下新增的功能包。

3.1 一些误区

很多人认为 R 语言是 GNU 开源项目软件,因此软件的使用是“没有任何保证” 的。但在美国,R 的计算结果被 FDA(Food and Drug Administration)所承认;并且有报告指出R 相比其他商业软件,bug 数量非常少(UCLA, 2006)!

R 开发的核心团队对于 R 的新功能持异常谨慎的态度,比如cairographics 从2007 开始酝酿,直到上一个大版本(2011 年)才引入到 R 标准安装程序;byte-compile 功能更是经历了1999-2011 近12年的孵化(Ripley, 2011)。从这个角度讲,R 语言的代码质量以及运算结果的可信性是完全可以保证的。

当然,这里所说的是 R 的标准安装程序包,并不代表所有的扩展包的质量。毕竟3700+的扩展包良莠不齐,虽然不乏一些优秀的包(如Rcpp, RODBC, VGAM, rattle),但必然存在一些扩展包质量不佳的情况。

3.2 应用的思考

R 语言并不是人人都会接触到的语言,相对要小众很多,有些人即便接触到没准也搞不清楚 R 到底是做什么用途。对于走上这条路的人,经常会有一些应用困难,比如对个人学习角度而言:

虽然 R 语言的设计之初就是避免通过大量编程实现统计算法,但最基本的编程能力还是需要的,因此对于一般非计算机专业的工作者来说无疑提高了难度;
还有很多人提到,R 语言的学习曲线非常陡峭。但从个人这么多年的使用经验上看,陡峭的学习曲线并不是R 语言本身的,而是隐藏在后面的统计知识很难在短时间内掌握的缘故。
从公司商业应用的角度而言,也存在一些不可回避的问题:

首先是人力资源成本如何核算;
软件成本问题,由于 R 是自由软件,可以随时随地下载,因此对于企业来说如何度量成本是一个问题;
R 的技能核定并没有官方或机构标准,简历上“熟练使用R 语言” 可能没有任何意义;
实际上,即便没有上述两个问题,那企业想找到 R 相关的人才不那么简单;
对于大量工作已经由其他软件实现(比如用SAS)的公司来讲,转化成本很高;
技术支持获取的问题。

4. 结语

R 语言虽然诞生于统计社区,服务于数据,但现在随着数据渗透到各行各业,R 语言已经远远超过统计范畴,相信不久的将来会有更多的朋友加入到 R 语言社区。这里写代码片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值