R语言缺点

 


R的优势:免费,开源,体积小。
缺点:对大文本处理差,另一个也在于开源,package若是出错,烦死你。
当你跑比较大的simulation,对效率有要求的时候,有时仍是不得不用C,这多是10小时和10分钟的差异,绝不夸张。
SAS流行于公司,R流行于研究机构和大学
数据分析不是单纯的靠软件来作的,须要很好的数学基础。html

统计学工具各有千秋。
https://englianhu.wordpress.com/statistics/
学了R,能够免去学spss,matalab,ucinet等等众多的软件,能够减小很多的学习时间,前景应该不错
若是lz不许备搞数据数据挖掘相关的东西,最好仍是学学python一类更通用的语言。若是搞数据挖掘的话,还能够学学hadoop...这种有专业背景的语言不会随便就消失的,前景不差~
r的数值计算没有像matlab高精度,好比算出应该是3的,可能r里面输出2.998。python

 


就一个R和SAS精通程度几乎相同,在两种环境下都作过比较大(moderately big, ~xx Gb)的数据分析,与其余语言环境嵌合(SQL, Perl, etc...)使用过的我的(统计专业人员,非编程专业人员)的感觉而言:程序员

R的优势:
1. 免费... 开源... (这是最重要的一点好很差,也是SAS流行于公司,R流行于研究机构和大学的最主要缘由)
2. 是专门为统计和数据分析开发的语言,各类功能和函数琳琅满目,其中成熟稳定的一抓一把
3. 语言简单易学。虽与C语言之类的程序设计语言已差异很大(好比语言结构相对松散,使用变量前不需明确正式定义变量类型等等),但仍保留了程序设计语言的基础逻辑与天然的语言风格。我这样说可能让人听得云里雾里,可是若是你对SAS或者SPSS有一点点了解,就会明白个人意思了...
4. 小... 安装程序只有50Mb左右,比起某些死贵且3个G的付费软件真的是超级迷你小巧玲珑... 由于体积轻便,运行起来系统负担也小。
5. 同各类OS的兼容性好。我两台本本一台Windows,一台Linux,都用得很顺手。相比之下,你有见过人在Mac上用SAS吗... 这人是要多么的想不开... =. =
6. 由于用的人愈来愈多,又是开源,有不少配套的“插件”为其锦上添花。好比xtable里有一个函数能够直接将R里的表格导出为TeX格式;另有RStudio的插件让你能够在同一个环境里写TeX跑R并可在你的TeX文件中插入你的R代码,多么的贤良淑德... (这个插件我没用过,不过我同窗一天到晚在用)
7. 有R GUI和RStudio两种风格供君选择,说实话我以为这两种风格已经涵括了大多数人的使用偏好...
8. 已经提过了开源,还想再强调一下。各类包和函数的透明性极好,这使得对函数的调整和改良变得很是便利。只须要把源码调出来,本身稍微修改一下就能够了。这种事情放在任何其余统计软件里都近乎奢望。
9. 若是你作Bayesian,用R你有OpenBUGS, WinBUGS, JAGS等各类成熟活泼的包裹,不少语言又简单又附带各类预设的plot,你只需调用便可;还能够本身写MCMC。若是你用SAS/SPSS/Stata,你能够... @@? = =bbb
10. 漂亮又灵活的图,你们也都已经讲过了。本来不是什么特别突出的长处(有则好,没也没啥),不过如今数据可视化愈来愈热,也就一跃成为主要优势了。算法

说说缺点:
1. 对大文本(text data)处理极差... 或者说data management本就不是R的强项。SAS于R的最大优点之一可能就在于它兼顾了数据分析和数据管理。在SAS里对数据进行各类复杂操做都相对容易,只须要简单的DATA STEP(必要时结合PROC SQL)便可完成;在R里可就真的是千辛万苦... 虽然也有相应的aggregate, merge之类的函数,可是大都不太好用。这也是为何你们经常把数据(尤为是数据大时)在别的环境下整好/分割好再喂给R。人家术业有专攻,数据管理真是有些难为它了。
2. 内存管理和平行处理(parallel processing/programming)都为人诟病。数据小时没有感受,数据大了就各类报错... =. =
3. package的可靠性问题。我第一门彻底使用R作做业的课是门统计课,教授已经六十多岁,见过各类统计软件的出生发展和湮没。她同咱们说到R时第一句话就是Never use a package before you understand the manual and confirm the validity of the functions. 也就是包裹虽然好,使用需谨慎。主要缘由仍是在于开源。不经常使用的package必定要搞清楚函数的用法和核实过输出,否则真的不推荐使用。我我的也是倾向很是用函数尽可能本身写,至少错了也容易debug...
4. 不得不提的package的版本问题。 就算你确认了包裹的可靠性并熟知了各个变量要怎么用,仍是可能掉入潜在的陷阱=. = 讲个真事:去年工做的时候一个项目是使用11年某项目的一个贝叶斯模型分析新的数据。当年写代码的人由于相信末日说两年前就已经辞职环游世界去了,因而我只好独自研读他的代码。第一步,很天然的,就是重复当年的分析结果。这时发现当年他用的一个package和如今的R已经不兼容,因而就下载了这个package的最新版本。结果有一个简单的credible interval怎么都重复不出来... 怎么怎么都重复不出来... 我都快绝望了。最后经各类推理验证,发现这个区别源自于新旧版本的函数内部在对数据排序以后对NaN的不一样处理... 而这个小小的修改未在任何地方留下任何文字记录。因此怎么说呢... 不少时候仍是写本身的程序靠谱哇...
5. 当你跑比较大的simulation,对效率有要求的时候,有时仍是不得不用C,这多是10小时和10分钟的差异,绝不夸张。
6. 想不出来乐 =w=sql

大体就是这样。编程

最后,由于不是学计算机出身,文中与编程语言和系统相关的措辞可能不许确或有误用,请程序员们多包涵=)

 

 

RStudio在yihui大神的加入之下有knitr了,不必定要写TeX,能够写markdown。
数据管理确实头疼,因此hadley大神作了plyr和dplyr尝试改变这一局面。
内存管理多用gc()……
从运行效率出发必然是C厉害,不过开发效率就……???因此出现了Rcpp包后端

 

R若是做为一门程序语言确实不怎么样,感受从基础架构往上推都是乱的。最简单的,函数的参数何时值传递、何时地址传递,彻底搞不清。语言一点也不简洁。R的优势就是能够用的package不少也很全,但除此以外真是不喜欢用,比python差远了。浏览器

R内部函数参数历来不传地址安全

R语言的语法仍是很不错的, 我的以为比MatLab好, 然而函数和工具包的体系确实一片狼藉, 函数名毫无规律, 函数对参数的要求千奇百怪, 参数的语义也是千奇百怪, 编程一直离不开在线文档服务器

一个package一套路子,要用其中一个函数就巴不得把整个manual浏览一遍,累死我的。

 

1. 大文本处理是什么鬼;data management? 你是说data manipulation吧,若是我没记错,2014年dplyr早就出来了
2. 内存管理是内存管理,并行处理是并行处理。内存管理R是不咋的。并行处理是MPI和*nix的fork机制,跟编程语言不要紧
3. 教授的意思,不光是可靠性问题吧,还有别光用包用得爽,得知道包后面的统计方法,以及当前是否适用。就包自己,一大票包是统计方法提出人本身写的,虽然效率可能不咋的,但正确性比Python一大票工程师写的统计包强多了(没有鄙视Python的意思)
4. 版本问题,谁也跑不了。*nix的包管理,Python的virtualenv,R的Packrat
5. 效率脚本语言的确比不上编译语言,除非像Google花大价钱堆出V8的Javascript。不过就算是脚本语言,烂代码也能比好代码慢上几个数量级

另,某楼说函数参数何时值传递,何时地址传递,彻底搞不清,那只是你搞不清。R的解释器最初是拿某Scheme的解释器改过来的,别一看跟想像的或经验不一致,就以为“从基础架构往上推都是乱的”

 

 

R语言
优势:
  1. 免费/包多,上手快,还有其余提到的;
  2. 咱们使用下来R最好功能是:画图,(ggplot2,plotly,shiny,ggmap,用起来真的很方便),ggplot2画静态图,plotly画交互图、shiny能够用网页交互,ggmap画地图类可视化
  3. 基于内存,训练速度还算快,代码量少;
  4. 开源,开发者还很多,是个不断壮大的社区,而且也发展的比较成熟了
  5. 轻量,使用数据量相对少的模型项目,几个G的数据,用16G内存的电脑吃得消;
  6. Rstudio用起来真的挺好的,界面很是友好,是个很优秀的IDE;
缺点:
  1. 不少人懂R语言,写出来的代码速度很是慢,特别是有些人总是喜欢写循环,我想说的是R语言恨透了循环。毕竟不是每一个人都会用Rcpp写代码的;
  2. 目前主流的DeepLearning的包都没有相关的R package,而python通吃;R如今只有一个明星产品mxnet,h2o勉强算1/4;
  3. 数据量足够大了以后,R确定是不适合了,内存要爆掉的;
  4. R的package很是的泛,开发包的人水平良莠不齐,不少package都没有持续的更新,不少bug都没有修复(python相对来讲会好不少,sklearn持续更新)
  5. 若是是在服务器上安装R的package,你想死的心都有,由于依赖、依赖、依赖啊,在不能联网的服务器上,你要手工的把依赖、依赖、依赖包都线安装好,心真累;

 

下面说说本身感觉到的缺点,可能比较基础,各位大神不吝赐教啊
1.由于package来自不一样贡献者,各个包的使用习惯可能差别极大,这实际上无形中增长了使用者的学习成本。这点实在很难细说,各位答题者应该都或多或少有所体验。不过,强烈建议初学者注意数据在R中的保存类型(这么说合适吗?),就是函数class的返回值。若是忽略这个,极可能哪天就卡死在一个函数上了,对于某些奇特的类型,使用常规函数分析前须要预先处理。不过熟悉以后这个基本不会是大问题。
2.package的质量实在良莠不齐。
野鸡的包不要用。
野鸡的包不要用。
野鸡的包不要用。
嗯,没听过的、没见过的、不是核心包的包不要用。


若是非要类比的话,Matlab是长枪大戟,攻城略地所用。毋庸置疑,python是冲锋枪,已经进入现代战争(指大数据分析)。然而,R是一柄剑,轻灵锐利。
最后,借用《英雄志》里的一句话:剑是天才的武道。

 


SAS: 速度快,有大量统计分析模块,可扩展性稍差,昂贵。
SPSS: 复杂的用户图形界面,简单易学,但编程十分困难。
Splus: 运行S语言,具备复杂的界面,与R彻底兼容,昂贵。

R的缺点
用户须要对命令熟悉:与代码打交道,须要记住经常使用命令。
占用内存:全部的数据处理在内存中进行,不适于处理超大规模的数据。
运行速度稍慢:即时编译,约至关于C语言的1/20。
相比点击鼠标进行操做,R仍可以大大提升效率。


优势:统计前沿的主流语言;扩展性好;对内存和并行运算的诟病其实不少人没真的理解r(它不适合直接就支持的,Revolution能够),内存不是r的限制,r的确是在内存中作运算的,但若是对计算机语言和统计算法的掌握不够,就会获得以上的结论。
缺点:一点没基础的人很难起步,不过如今有视频和培训了;要精通r很难,这点在上面内存已经说过了,这其实国内统计教育的失败之处;r包如今发展极快,学习r须要耗费大量精力(严格这不是r的问题,而是中国社会环境的问题)

优点: 
  • 能完成绝大部分数据相关的分析、统计、挖掘、可视化等工做
  • 能和Hadoop等大数据解决方案一块儿工做
劣势:
讨厌的赋值符号 <-

涉及到中文的时候乱码问题老是出现

 

 

优势:

- 软件包丰富
- 文档化帮助信息很友好,简单易学
- 兼容性好,跨平台
- 对统计分析自然支持
- 有RStudio这种大杀器

缺点:

- 对文本处理不是很灵活,尤为是和Python对比
- 当数据大的时候,尤为涉及读写文件,感受效率不是很高(也多是我本身不会优化)


优势开源,可是不少人为了方便会写些R包,不少R包的正确性和效率难以保证。
R老是将数据存储在内存中,因此不适合作大数据量处理。
R 的主要优点是开源,自由,有cran,不少学者的paper 或者著做,直接提供了R codes。其主要由统计学家实现,语法比较适合统计分析,但这一样也是他的缺点,没有专业的计算机专家辅助,难以有高质量的实现。好比高性能、大数据量计算,这块比matlab 和 SAS差距好大,matlab 能够利用多核自动并行化,R只能利用一个核,而且内存占用很恐怖,对于大数据量是个噩梦


R的优势:
1. 免费... 开源... (这是最重要的一点好很差,也是SAS流行于公司,R流行于研究机构和大学的最主要缘由)
2. 是专门为统计和数据分析开发的语言,各类功能和函数琳琅满目,其中成熟稳定的一抓一把
3. 语言简单易学。虽与C语言之类的程序设计语言已差异很大(好比语言结构相对松散,使用变量前不需明确正式定义变量类型等等),但仍保留了程序设计语言的基础逻辑与天然的语言风格。我这样说可能让人听得云里雾里,可是若是你对SAS或者SPSS有一点点了解,就会明白个人意思了...
4. 小... 安装程序只有50Mb左右,比起某些死贵且3个G的付费软件真的是超级迷你小巧玲珑... 由于体积轻便,运行起来系统负担也小。
5. 同各类OS的兼容性好。我两台本本一台Windows,一台Linux,都用得很顺手。相比之下,你有见过人在Mac上用SAS吗... 这人是要多么的想不开... =. =
6. 由于用的人愈来愈多,又是开源,有不少配套的“插件”为其锦上添花。好比xtable里有一个函数能够直接将R里的表格导出为TeX格式;另有RStudio的插件让你能够在同一个环境里写TeX跑R并可在你的TeX文件中插入你的R代码,多么的贤良淑德... (这个插件我没用过,不过我同窗一天到晚在用)
7. 有R GUI和RStudio两种风格供君选择,说实话我以为这两种风格已经涵括了大多数人的使用偏好...
8. 已经提过了开源,还想再强调一下。各类包和函数的透明性极好,这使得对函数的调整和改良变得很是便利。只须要把源码调出来,本身稍微修改一下就能够了。这种事情放在任何其余统计软件里都近乎奢望。
9. 若是你作Bayesian,用R你有OpenBUGS, WinBUGS, JAGS等各类成熟活泼的包裹,不少语言又简单又附带各类预设的plot,你只需调用便可;还能够本身写MCMC。若是你用SAS/SPSS/Stata,你能够... @@? = =bbb
10. 漂亮又灵活的图,你们也都已经讲过了。本来不是什么特别突出的长处(有则好,没也没啥),不过如今数据可视化愈来愈热,也就一跃成为主要优势了。

说说缺点:
1. 对大文本(text data)处理极差... 或者说data management本就不是R的强项。SAS于R的最大优点之一可能就在于它兼顾了数据分析和数据管理。在SAS里对数据进行各类复杂操做都相对容易,只须要简单的DATA STEP(必要时结合PROC SQL)便可完成;在R里可就真的是千辛万苦... 虽然也有相应的aggregate, merge之类的函数,可是大都不太好用。这也是为何你们经常把数据(尤为是数据大时)在别的环境下整好/分割好再喂给R。人家术业有专攻,数据管理真是有些难为它了。
2. 内存管理和平行处理(parallel processing/programming)都为人诟病。数据小时没有感受,数据大了就各类报错... =. =
3. package的可靠性问题。我第一门彻底使用R作做业的课是门统计课,教授已经六十多岁,见过各类统计软件的出生发展和湮没。她同咱们说到R时第一句话就是Never use a package before you understand the manual and confirm the validity of the functions. 也就是包裹虽然好,使用需谨慎。主要缘由仍是在于开源。不经常使用的package必定要搞清楚函数的用法和核实过输出,否则真的不推荐使用。我我的也是倾向很是用函数尽可能本身写,至少错了也容易debug...
4. 不得不提的package的版本问题。 就算你确认了包裹的可靠性并熟知了各个变量要怎么用,仍是可能掉入潜在的陷阱=. = 讲个真事:去年工做的时候一个项目是使用11年某项目的一个贝叶斯模型分析新的数据。当年写代码的人由于相信末日说两年前就已经辞职环游世界去了,因而我只好独自研读他的代码。第一步,很天然的,就是重复当年的分析结果。这时发现当年他用的一个package和如今的R已经不兼容,因而就下载了这个package的最新版本。结果有一个简单的credible interval怎么都重复不出来... 怎么怎么都重复不出来... 我都快绝望了。最后经各类推理验证,发现这个区别源自于新旧版本的函数内部在对数据排序以后对NaN的不一样处理... 而这个小小的修改未在任何地方留下任何文字记录。因此怎么说呢... 不少时候仍是写本身的程序靠谱哇...
5. 当你跑比较大的simulation,对效率有要求的时候,有时仍是不得不用C,这多是10小时和10分钟的差异,绝不夸张。

 

 

 

 

 


除了统计函数包外,对于常规运算,R基本上乏善可陈,语法晦涩,性能奇差;因此如今R大有被python取代的趋势。
对于结构化数据计算,R的集合式语法和data frame对象已经被python的pandas包复制了,可是这二者作的都还不够好。这方面更有优点的开发语言是esproc,提供了远比data frame更强大的数据对象,一样有集合式语法但更天然易懂,遍历外存文件数据的的性能超过R的十倍以上。

下载了这本书的试读的16页,首先颜色排版看着是很舒服的,列子讲解也比较详细,并配有相应图片。由于是初学者,因此非常但愿看到书籍中具体事例,好比书中的灯泡的平均寿命那个,但是不知道能从事例弄出来的指数分布曲线图分析出些什么(没有统计分析的底子,看这些比较难,主要不知道最后怎么去应用)。
R语言对我来讲难点就是没有统计分析学背景,而且不少数学公式彻底不知道怎么回事。对算法基本上算小白。不过期间充足的状况下这些都是能够攻克的。

1. 你们以为R语言难学吗?困扰你的主要是什么?
R语言很是易于入门,它的函数的使用很简单,开发IDE的使用也很简单。
咱们最爱使用的是RStudio开发工具。
可是,精通R语言也有一些难点或者说是困扰,主要表如今:
1)R语言的包/库极其庞大,有数千个,不少时候你并不知道该使用什么包/库来解决问题。
2)正如第一点所说,库太多,并非全部的包/库都是高质量的,使用某些库分析数据得出的结果有多是相互矛盾的。
3)R语言跟几率论和数理统计结合紧密,数学功底不深的话,难以精通R语言。

2. R能够实现数据分析中的哪些工做?
R语言能够实现数据分析中的绝大多数工做。
能够进行数学运算;
能够进行 统计和分析;
能够作快速傅里叶变换;
能够进行平滑和滤波;
能够作基线和峰值分析。
- 数据传递及服务(RHive、Rserve、rJava)
- 清洗及预处理(sqldf、stringr、XML)
- 抽样、分类、关联觃则、特征选择、稀疏矩阵运算、矩阵分解、社交网络
- 高性能计算(rhdfs、rmr二、Rcpp)
等等

3. 你曾经使用或编写过R软件包吗?
曾经在某个项目中频繁使用。后来用Python的数据分析包更多一些。
一句话,不限于R语言,快速解决问题是根本。

4. 说说您读完试读样章后的启发
样章提供了第四章“随机数与抽样模拟”的内容,从这章的内容来看,书籍描述比较浅显易懂,并无长篇大论的理论分析,而是以例子为主,伴随讲述了不少函数。不错的书,渴望一读。
从统计学自己来讲,R与其余的软件都是能够大大地增长生产力的辅助工具。而且R与商用软件相比,着实有些寒碜。从样章来看,不太喜欢这样罗列各类功能的结构,若是可以以一个案例的形式讲解如何应用的具体场景,效果会更好些。


1如何掌握r
答:要想快速掌握R的最好方法是选择一本叫好的参考书,跟着参考书学一遍即基本上学会R了,固然若是要想熟练使用,仍是须要本身在实际的数据分析中多用多思考。
2实际数据分析中r使用有什么能够分享的经验
答:实际分析中R的使用要具体问题具体分析。通常来说:(1)在读入数据以前,先看一下每一个变量的类型,是连续的仍是离散的?每每离散的变量须要转换成虚拟变量;(2)写code过程当中,勤加注释,由于可能过几个几天都不认识本身写的code了;(3)写程序时尽可能少用循环,能用矩阵运算尽可能用矩阵运算。

3内存溢出如何办
答:内存问题始终是限制R的一个问题之一。通常来说,加大内存是最好的方法,因此碰到海量数据时,建议通常用HPC(高性能计算机)去运算;另外一方面看看有无可能优化本身的算法,尤为是不要有太多的循环,循环是R的薄弱环节。此外,还能够清理一些不用了的对象来释放内存,若是真的须要大计算的话,能够看一些处理大内存对象与并行计算的软件包等,好比bigmemory等。

4数据分析算法如何根据问题选择
答:数据分析算法的选择是很是复杂的一个问题,这个不只仅是R的问题了,而是统计的问题,每种统计方法、算法都有其适用的条件,不是全部场合都套上去就能够了,因此学习R来讲,其实最好是结合统计、数据分析的方法来学是最好的。

5异常数值和缺失数值如何处理
《R数据分析-方法与案例详解》的第5章有讲解,请参考。

6特征变量如何构造,衍生变量如何构造
《R数据分析-方法与案例详解》的第5章有讲解,请参考。

 

 

 

 


  R的短板在于安全性与内存管理
  说了这么多优点,R语言固然也存在着必定不足。“内存管理、速度与效率多是R语言面临的几大最为严峻的挑战,”Adams指出。“在这方面,人们仍然须要努力推进——并且也确实正在推进——其进展与完善。此外,从其它语言转投R怀抱的开发人员也会发现后者在某些设定上确实有些古怪。”
  R语言的基本原理来自上世纪六十年代出现的各种编程语言,Peng解释道。“从这个意义上讲,R语言在设计思路上属于一项古老的技术成果。”这种语言的设计局限有时候会令大规模数据集处理工做遇到难题,他强调称。由于数据必须被保存在物理内存当中——但随着计算机内存容量的不断提高,这个问题已经在很大程度上获得了解决,Peng指出。
  安全等相关功能并无被内置在R语言当中,Peng指出。此外,R语言没法被嵌入到网络浏览器当中,Peng表示。“咱们不能利用它开发Web类或者互联网类应用程序。”再有,咱们基本上没办法利用R语言看成后端服务器执行计算任务,由于它在网络层面缺少安全性保障,他表示。不过Amazon Web Services云平台上的虚拟容器等技术方案的出现已经在很大程度上解决了此类安全隐患,Peng补充道。
  长久以来,R语言当中始终缺乏充足的交互元素,他表示。但以JavaScript为表明的各种编程语言介入其中并填补了这项空白,Peng指出。虽然咱们仍然须要利用R语言处理分析任务,但最终结果的具体显示方式则能够由JavaScript等其它语言来完成,他总结道。
  R语言并不单纯面向高端程序员
  不过Adams与Peng都会R视为一种易于接受的语言。“我本人并无计算机科学教育背景,并且历来没想过要当一名程序员。将编程基础知识归入技能储备固然很不错,但这并非上手R语言的必要前提,”Adams指出。
  “我甚至并不认为R语言只适用于程序员。它很是适合那些面向数据并试图解决相关问题的用户——不管他们的实际编程能力如何,”他强调称。

 

 

 

 http://www.itpub.net/thread-1913151-1-1.html

 

 

http://www.dataguru.cn/article-8508-1.html

摘要
尽管在工业界仍是被 SAS 所统治,可是 R 在学术界却获得普遍的应用,由于其免费、开源的属性使得用户们能够编写和分享他们本身的应用。然而,许多正在得到数据分析相关学位的学生们因为缺少 SAS 经验的状况而在找工做的路上困难重重,与此同时,他们要面对从学校熟悉的 R向 SAS 转型的痛苦。理想状况是,你须要知道全部可能的编程语言,工做的时候使用与工做状况最匹配的那个,固然这个基本上是痴人说梦。咱们的目的就是展现这两种差别巨大的语言各自优势,而且共同发挥他们的优点,咱们同时还要指出那些不使用 SAS 好多年的、如今正在使用  R语言的人们的一些误解和偏见,由于他们已经不多关注 SAS 的发展和进步了。
 
前言
咱们选取 SAS 和 R 的缘由是由于他们是目前在统计领域中最有统治地位的两个编程语言。 如今咱们注意到一个很差的现象,就是在学术界重度使用R的用户认为R在被SAS霸占的工业界有具备至关优点的,然而熟练掌握这两个软件对于想在数据分析领域取得小有成就的年轻人来讲很关键。教授误解加上对某个软件的偏好每每对学生有着不利的引导,所以须要在这里指出:教授们,别偷懒了,对某种语言的主观偏好将会影响学生的钱途。
 
SAS常常有一些更新(有点慢),非SAS程序员因为没有技术跟进每每并不知情。SAS绘图模块就是一个快速发展并成长的例子,然而许多人并不注意到这些升级以致于他们仍然执拗的使用 R画图。SAS另外一个不广为人知的例子是SAS能够轻松自定义函数,这正是 R 的强项。这个SAS过程步(PROC)有全面的语法检查、翔实的文档和技术支持;然而一个新的使用者极可能不知道这些工具可用,或者根本不知道它们的存在。另外,SAS 还拥有卓越的培训课程,网络及用户组分享资源,不一样相关主题的大量书籍。知道并合理的使用这些技术以及工具 有助于减小使用 SAS的畏惧之心。
 
相关问题讨论
本文就在咱们学院碰到的一些共同误解的地方,在此对比列出两种语言的优缺点。固然还有更多的争论在进行中,可是本文汇中咱们将选取更为广泛的来进行讨论。咱们但愿可以消除误解,而且尽量地为那些不能及时跟进R或SAS的分析人士提供新的信息。
 
1.统计方法的新进展
 
SAS
优势:SAS 的软件及 算法都是通过检验的,SAS 有技术支持去快速解决用户的需求。 若是须要的话,SAS 会尝试在已存在的步骤中嵌入新的方法,例如增长一个选项或者新增一个语句(statement),所以用户不须要学习另一个过程步。SAS也 会发布通信来详细说明软件的更新。
Ÿ
缺点:更新升级较慢。
 
R
优势:用户能够快速实施新方法,或者寻找已经存在的软件包。很容易学习和理解新方法,由于学生们能够看到代码中的函数。
 
缺点:R 文档的更新都是经过用户进行的,因此新的方法并无被很好调试和检验。 开发者们散布于各地,而并无在一块儿来进行团队合做的开发。
 
在这个问题上,SAS 和 R 的优缺点是互补的。对于 R,有人认为它的代码是开放的,能够看到 R 是如何工做的,这对于拥有相关背景的人是比较容易理解的。然而对于 SAS,它的过程步是预装的,文件中对不一样的语句(Statement)及选项( Option) 存储了大量的数学公式。若是用户真的想看到底层程序,这个也是很容易实现的。对两种语言的使用着者来讲,无论是学生仍是其它用户,只是运行代码的话对于两种语言是没有什么不一样的。你运行SAS,不须要知道它在干什么,相似的是,你运行R时,也不须要知道它在后台调用的函数。你所作的就是按章操做而已。
 
2.画图
 
SAS
优势:SAS画图模块正变得愈来愈灵活、精良和易于使用。在一些分析过程步(PROCs) 中,ODS Graphics能够自动的生成一些图形,而不须要额外的代码。这使得用户多了一个选择,便可以使用默认的图表生成图表,也能够本身来创造个性化的图表。
 
缺点:图形背后的模板语言(TL)是庞大及不易使用的,特别是对于新手来讲。新的高级功能如交互式绘图功能( interactive graphs),对于新手来讲也是难以掌握的。
 
R
优势:能够简单的生成漂亮的图表,还能够使用循环语句来生成动画。
 
缺点:在 R 中图表功能与统计分析无关,绘图和分析是相互独立的。用户必须本身来决定什么样的图形是合适的,使用效果的好坏取决于用户们的统计背景和喜爱。尽管改变图形去达到特别的维度或角度并非一个简单事儿。
 
SAS9.2 以前版本的图表功能不足是 R 更吸引人的一个主要缘由之一。R的一个较好的特性之一就是其图表功能的高质量性和易用性。可是,当前 SAS/GRAPH 搭配 ODS Graphics 及 SG 过程在软件中增长了制图的能力。联合使用 ODS graphics 和 PROCS 能够使用户简单地生成与分析相关的展现图表。 特定的绘图过程步如PROC SGPLOT,SGPANEL和SGSCATTER等愈来愈多,固然须要的必定代码来实现。另外,SAS 中还有一些其余不错的绘图选择,如 SGDESOGNER 和 SAS Enterprise Guide。
 
3.函数及可重复使用的代码
 
SAS
优势:SAS有可在 DATA 和 PROC 步使用的大量函数和自定义函数。另外强大无所不能的、也能够被DATA步和PROC步使用的宏语言。宏变量可定义为局部或者全局类型。
 
缺点:编写自定义函数和详细的宏代码须要深厚的编程知识来确保正确性。
 
R
优势:在 R 中编写函数很简单,用户也能够经过上传本身的函数到 R-CRAN 上与其 它用户分享。
 
缺点:编写自定义函数须要深厚的编程知识来确保正确性。变量是严格的局部变量。
 
在这一点上两种软件拥有相似的利弊。SAS 的早期用户运行本身的定制函数主要取决于宏程序的编写,这也是 R 用户认为其低效及笨重的缘由。然而,SAS 9 版本的 PROC FCMP容许用户编写个性化的函数,SAS 9.2 版本又容许用户在 DATA 及 PROC 步中调用这些函数。 这对于简单的统计函数是颇有用的,对于更加复杂的统计函数也能够经过 IML 语言来实现。
 
SAS 及 R 两种语言都面临着怎样有效地、正确的使用函数,这就须要用户在函数编写的过 程中拥有深厚的编程背景。从好的角度来讲,一个程序员须要知道他们编写的是什么;危险的是,其它人能够下载一个 SAS 宏或者 P 程序包来使用,尽管他们不知道其内在工做原理, 甚至不知道其正确性。因此,有了对宏及函数适当的了解,再来分享它们并应用于具体的需 求是很方便的。
 
4.免费软件
 
SAS
优势:SAS 有OnDemand 版本的软件,免费提供给学位颁发机构。
 
缺点:真正的 SAS 和 JMP 并非免费的。OnDemand 版本对使用何种操做系统有一 些限制,并且据反映运行速度很慢。
 
R
优势:R 是彻底免费。
 
缺点:开源软件对于大公司来说都会有安全方面的担心。
 
SAS公司为教育机构提供的免费替代品能够保证教授们在课堂上的使 用。对于 OnDemand 的安装过程和速度须要注意。总之,SAS 和 JMP 不是免费的,公司须要使用许 可来使用该软件。R 能够免费的安装,但许多参与论战的博主们认为若是那些正在使用 SAS 的公司去使用 R,将会花费远远超过 SAS 受权费用的资源和财力,例如重写代码、构建新 的团队、招聘新的专业人员等等。并且对于那些分析结果须要经得起严格检验要求的公司, 可能 SAS 更加适合。尚未现存分析框架的小公司能够来探讨是选择历史悠久、资源丰富的付费软件(SAS),仍是要选择虽然免费、可是还须要其它先期投资(如员工的知识背景, 编写及调试代码)的软件(R)。最终,从时间和金钱的角度来衡量,SAS 和 R 的花费可能 是基本接近的。
 
5.用户支持
 
SAS
Ÿ优势:SAS 有丰富的网上参考资料,专业的技术支持,专业的培训课程,许多优秀 的出版书籍,一个紧密的用户组及网络社区。SAS 的问题能够直接反映给技术支 持部门,他们会与用户一块儿来解决。
Ÿ
缺点:真的没想到。
 
R
优势:R 有很好的示例手册,网上参考材料,R 邮件列表和 R 聚会。
 
缺点:用户们取决于其它用户对于软件的见解及建议。由于 R 的开发者散布于全球 各地,因此全球的用户是缺少联系的。程序包(Package)并非由 R 软件的开发 核心团队来编写的,因此致使了程序的不完善甚至有时候会对结果的正确性有所怀 疑。另外,很难去直接寻找一个针对具体问题的人员或者团队。
 
SAS 所提供的卓越的支持是他们以客户为中心设计产品的亮点。SAS 支持的优势对初 学者是理想的帮助,其大量的细节也使资深用户受益不浅。R 较为混乱的参考资料和匮乏的 技术支持在须要寻找帮助时困难重重。这违背了 R 的开发设计者的初衷。
 
6.数据处理
 
SAS
优势:SAS 能够处理任意类型和格式的数据。DATA 步的设计纯粹就是为了数据的管 理,因此 SAS 擅长处理数据。利用丰富的选项,SAS 能够将大数据处理的很好,拼表以及 PROC  SQL 也能够减小运行时间。
 
缺点:在 DATA 步骤中 SAS 中的DATA步有非明示的循环算法,所以使用者的编程思惟须要改变以符合SAS的运行逻辑。
 
R
优势:R 在最初就被认为是更加适合大数据的。它对于矩阵的操做和排序的设计是非 常高效的。R 也能够很好的进行各类基于分析的数据模拟。
 
缺点:R 的设计更加关注统计计算以及画图功能,因此数据的管理是比较耗时的,而 且不如在 SAS 中那么明晰。其中一个主要的缘由就是:对于各类不一样类型的数据,在 R 中进行很好的数据处理是比较难以掌握的。
 
数据处理的重要性常常在统计编程中被忽视了,可是它确实是很是关键的,由于实际的数据很是糟糕,不能直接应用于分析。纯粹地使用 R 的学生们对于获得的数据每每有不切实际的指望,而学习 SAS 是一个有效的方法去解决怎样整理原始的数据。SAS能够对大而繁杂的数据集进行管理和分析,而 R更着重于进行分析。
 
当处理复杂数据时,R 的面向对象的数据结构会遇到不少问题,而且R还缺少一个内在的循环过程。在SAS中,应用标准化工具常常会进行以下操做:合并含有大量缺失数据的复杂数据集,再生成及修改其中的变量。而在R中,进行复杂的数据处理操做是没有标准化的,并且常常会致使更加复杂的过程。
 
SAS与R软件运行时间的快慢对比取决于任务。如SAS能够经过设置 MEMLIB,从而像R同样使用内存(而非硬盘)来提高运行速度。但在R中,没有这样的硬件驱动,只能使用内存来执行。
 
7.安装
 
SAS
优势:SAS全部的分析功能及受权都被总体打包在一块儿安装。升级受权证书是很是容易。
 
缺点:首次安装或升级到一个新的版本是很耗时且有点麻烦的。可是这比在课堂上向 学生们讲述如何使用这个软件简单1000倍。如今愈来愈多的学生们在课堂上使用Macs系统的笔记本,可是SAS没有Mac版,意味着这部分学生没法使用 SAS。
 
R
优势:R 和其最经常使用的用户界面 RStudio 在 Window、Mac 和 Unix 环境下都很容易安 装和打开,且安装速度都很快。
 
缺点:运行必须知道知足需求的程序包,而后搜索、安装、了解具体功能。截止原文发表时,共有 4379 个可用程序包,这一数量还在天天增长。在提供了更多选择的 同时,也增长了搜寻的时间和难度。
 
SAS 的得到对用户来讲比较困难,首次安装也是比较麻烦的。可是一旦安装完成了, 有关软件自己的问题就不多了,对于特别的分析,也不须要额外的程序包或者步骤了。R 中 相反,安装很是简单,但对于额外分析,须要另外安装程序包,浪费了安装软件所节省的时 间。
 
8.报表
 
SAS
优势:SAS 经过不少有用的过程步来生成详细漂亮的报表。
 
缺点:能提供更详尽报表的过程如 TABULATE、REPORT 等,在能正确而有效的使用前,将为有一个艰难的学习曲线等待你跨越。
 
R
优势:报表方面,R拥有诸多利器。Sweave包能够创造包含文字、表格和图形的 PDF 文件,其中图形能够LaTeX 和 R 命令来装扮。另外一个新的程序包 Knitr 能够快速生成格式限制较少的网页内容。
 
缺点:R 没有一个模式化的方式来生成报表,因此须要在编程上花一些功夫。报表的生成对于 R 来讲是一个比较新的方向,因此它不如 SAS 来的简单和快速。在 R 中,Sweave 和 Knitr 是报表这方面的领先的程序包,可是学习起来也比较困难。
 
重度报表使用用户应该了解这些以上不一样,尽管学习 SAS 的报表功能须要花费一些时间,可是一旦掌握了就颇有价值并有很高的灵活性。而从最基础学习 R 的报表功能也许不须要像 SAS 那样花那么多时间。
 
结论
咱们能够看到解决 R 与 SAS 的辩论是三合一的。
 
第一,就像在任何一个统计编程社区 同样,咱们知道这个PK是没有一个最终赢家。两种软件各有优缺点。他们有共存的必 要,而学术上的教学中,他们也有共存的必要。若是学生们可以明确他们的需求并合理的应 用,那样会得到更好的效果。若是只给学生教授一种软件是有局限性的,这样会使他们难以 发挥学习另一种软件的潜力。
 
第二,用户们须要保持他们的工具箱与时俱进。SAS 和 R 都有一些很不错的 学习网站去介绍 的技术上的进步。 SAS 技术支持网站http://support.sas.com 有许多的动态,如 Focus Areas、E-newsletters、RSS 种子和博客。R 博客网站 http://www.r-bloggers.com 包含了许多用户贡献的新闻和练习。
 
第三,最理想的是学习 两种软件并将其融合于分析中。这里有许多方法能够尝试,例如用 SAS 的 IML 和 SAS 的 IML/Studio(IML 是 SAS 的一个加载项)功能,或者经过使用 SAS X Statement 执行外部命 令,使 R 代码在 SAS 中转化成 SAS 命令来运行。对于 R 的用户们,经过转化 R 到 SAS 的 用户界面,能够同时使用 2 种软件。经过使用两种软件能够使处理及分析数据变得事半功倍,并且使全部的用户都满意。
相关文章
相关标签/搜索