简要介绍R语言的优点,R语言的重要性
就整个编程语言圈来说,R语言比较少,应用领域主要是统计学和与统计学相关的地方。r语言一开始就没有被设计成通用语言(指与系统底层相关的一些操作),只是专注于数据分析和绘图。所以一直没有在行业内广泛应用(其实我也说不清这个行业到底指的是什么,大家想一想==)。但是之前说的小众是相对的。对于统计分析人员和研究人员来说,R语言意义重大。
R语言最强大的部分是它的统计计算功能,可以从数据结构和算法两个方面来描述。
首先,它的许多数据结构是为数据处理的需要而设计的。比如有一种数据类型叫data.frame,本质上是一个二维表,每行是一条记录,每列是一个字段(用统计学的术语来说,每行是一个观察值,每列是一个变量)。Data.frame是一种矩阵结构,可以对行和列进行一系列操作,但也允许每一列的数据是不同类型的,这与现实中的很多数据是一致的。当然,其他流行语言实现这些操作并不难,但是R语言把这些数据结构作为内置部分。
另外,R语言的大部分运算都是矢量化的,和Matlab很像,所以省略了很多显式循环。例如,如果x是一个向量,那么如果我想标准化它(减去平均值,然后除以标准差),我只需要
(x -均值(x)) /标准差(x)
形式上就像写一个数学公式。
除了基本的数据结构,数据处理最重要的一点是各种统计方法。在这一点上,R语言可以说是无语了。R语言的统计方法更新很快。目前增加的软件包有3000多个,大部分是统计学专业的老师和学生,以及数据分析师贡献的。当然,这有利也有弊。好处是你总能找到最新的统计方法,因为那些勇敢的造雨者基本上都是发论文的时候把程序编好然后挂在网站上;缺点是新方法往往不成熟,袋子质量参差不齐。有时候你可能不敢轻易使用它们。
这是许多开源项目的共同缺点。商业机构提供的软件会由工程师进行测试和调试,而R语言是开源项目,不负责使用后果。所以站在公司的角度,公司往往不愿意承担这方面的风险。
论R的效率R是脚本语言,速度肯定不如C等编译语言快,但R语言设计的初衷不是追求效率,而是符合统计编程的思想。R语言的优势在于可以快速实现各种复杂的算法。比如你提出一个新的统计方法,你可以快速的用R语言做一些模拟实验。如果效果不好,也不会浪费太多时间。而如果你用FORTRAN或者C写,编程的时间可能比你想象的要长。如果效果不好,就得重新开始。因此,使用R语言建立模型是合理的,如果模型成熟,则使用C或FORTRAN实现高效运行。
其实R语言和其他语言是可以互相调用的。目前,我知道以下情况:
Python通过RPy库调用R,NET通过COM组件调用R,JAVA通过JRI库调用R,C和C可以直接从R的dll调用R。相反,R内置了调用C/C和FORTRAN的方法,也可以通过rJava包调用JAVA。
其中,一种是从R调用C和FORTRAN,以提高运算速度;另一种是从。NET,以便快速制作一个图形界面。NET,然后在后台把数据分析交给R,再把R的操作结果返回给前台。
说r最后一个有趣的应用。
r语言有一个很实用的功能,就是和LaTeX集成生成动态文档。这个函数叫做Sweave。在写LaTeX文档的时候,可以给它添加一个特定的R程序区块,然后在编译这个文档的时候,R会先计算其中的程序代码,得到输出结果,然后把这些结果插入LaTeX文档。这也是Donald Knuth提出的识字编程的一个实现。例如,下面的LaTeX文档,
.
\ begin {文档}
现在,我们的老师有10个正常的随机数:
echo=FALSE=
x=r norm(10);
打印(x);
@
然后计算其均值等于\Sexpr{round(mean(x),3)}。
\end{document}
将首先被翻译成
.
\ begin {文档}
现在,我们的老师有10个正常的随机数:
[1]-0.35165957-0.96620642 0.96028362-0.10754500-1.17599252 0.41813888
[7] 1.27305011 0.56903124 0.08912148-0.28017186
然后计算出其平均值等于0.043。
\end{document}
然后把翻译好的LaTeX文档编译成pdf。试想一下,如果你每个月都要编制一份统计分析报告,而其中使用的方法其实是固定的,只是数据来源不同,那么你就可以编制这样一个Sweave文档,然后每个月只需改变数据来源,报告就可以自动生成了。
最后我再解释一下,写这个帖子主要是分享我几年来使用R语言的经验,介绍给以后可能会用到的人。说了这么多,主要是一些优点,但客观来说,R语言也有很多问题。首先,它缺乏更专业的技术支持。R语言的贡献者(包括R cores,核心开发者,软件包的贡献者)大多是统计出身。我相信在编程能力上和计算机专业的人还是有一些差距的。所以在一些底层优化上,相比其他成熟的脚本语言还是有所不足。第二点是软件包的管理。目前R core对附加包的态度基本是放任和放任。只要你的包能通过自己的语法测试,就可以挂在服务器上让别人下载使用,这就造成了包的质量参差不齐,需要一定的筛选。第三点是运营效率。这也是R语言用户最头疼的问题,但是根据伟大的性格守恒定律,如果一种编程语言过于灵活,其效率肯定会降低。要解决这个问题,最好的办法当然是……好好学习,努力工作,赚很多钱,然后换一个更好的机器。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。