R的优点:免费,开源,体积小。
缺点:对大文本处理差,另外一个也在于开源,package如果出错,烦死你。
当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和10分钟的差别,毫不夸张。
SAS流行于公司,R流行于研究机构和大学
数据分析不是单纯的靠软件来做的,需要很好的数学基础。
统计学工具各有千秋。
https://englianhu.wordpress.com/statistics/
学了R,可以免去学spss,matalab,ucinet等等众多的软件,可以减少不少的学习时间,前景应该不错
如果lz不准备搞数据数据挖掘相关的东西,最好还是学学python一类更通用的语言。如果搞数据挖掘的话,还可以学学hadoop...这种有专业背景的语言不会随便就消失的,前景不差~
r的数值计算没有像matlab高精度,比如算出应该是3的,可能r里面输出2.998。
就一个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=
大致就是这样。
最后,因为不是学计算机出身,文中与编程语言和系统相关的措辞可能不准确或有误用,请程序员们多包涵=)
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最好功能是:画图,(ggplot2,plotly,shiny,ggmap,用起来真的很方便),ggplot2画静态图,plotly画交互图、shiny可以用网页交互,ggmap画地图类可视化;
- 基于内存,训练速度还算快,代码量少;
- 开源,开发者还不少,是个不断壮大的社区,并且也发展的比较成熟了;
- 轻量,使用数据量相对少的模型项目,几个G的数据,用16G内存的电脑吃得消;
- Rstudio用起来真的挺好的,界面非常友好,是个很优秀的IDE;
缺点:
- 很多人懂R语言,写出来的代码速度非常慢,特别是有些人老是喜欢写循环,我想说的是R语言恨透了循环。毕竟不是每个人都会用Rcpp写代码的;
- 目前主流的DeepLearning的包都没有相关的R package,而python通吃;R现在只有一个明星产品mxnet,h2o勉强算1/4;
- 数据量足够大了之后,R肯定是不适合了,内存要爆掉的;
- R的package非常的泛,开发包的人水平参差不齐,很多package都没有持续的更新,很多bug都没有修复(python相对来说会好很多,sklearn持续更新)
- 如果是在服务器上安装R的package,你想死的心都有,因为依赖、依赖、依赖啊,在不能联网的服务器上,你要手工的把依赖、依赖、依赖包都线安装好,心真累;
1.因为package来自不同贡献者,各个包的使用习惯可能差异极大,这实际上无形中增加了使用者的学习成本。这点实在很难细说,各位答题者应该都或多或少有所体验。不过,强烈建议初学者注意数据在R中的保存类型(这么说合适吗?),就是函数class的返回值。如果忽略这个,很可能哪天就卡死在一个函数上了,对于某些奇特的类型,使用常规函数分析前需要预先处理。不过熟悉之后这个基本不会是大问题。
2.package的质量实在参差不齐。
野鸡的包不要用。
野鸡的包不要用。
野鸡的包不要用。
嗯,没听过的、没见过的、不是核心包的包不要用。
如果非要类比的话,Matlab是长枪大戟,攻城略地所用。毋庸置疑,python是冲锋枪,已经进入现代战争(指大数据分析)。然而,R是一柄剑,轻灵锐利。
最后,借用《英雄志》里的一句话:剑是天才的武道。
SAS: 速度快,有大量统计分析模块,可扩展性稍差,昂贵。
SPSS: 复杂的用户图形界面,简单易学,但编程十分困难。
Splus: 运行S语言,具有复杂的界面,与R完全兼容,昂贵。
R的缺点
用户需要对命令熟悉:与代码打交道,需要记住常用命令。
占用内存:所有的数据处理在内存中进行,不适于处理超大规模的数据。
运行速度稍慢:即时编译,约相当于C语言的1/20。
相比点击鼠标进行操作,R仍能够大大提高效率。
缺点:一点没基础的人很难起步,不过现在有视频和培训了;要精通r很难,这点在上面内存已经说过了,这其实国内统计教育的失败之处;r包现在发展极快,学习r需要耗费大量精力(严格这不是r的问题,而是中国社会环境的问题)
- 能完成绝大部分数据相关的分析、统计、挖掘、可视化等工作
- 能和Hadoop等大数据解决方案一起工作
涉及到中文的时候乱码问题总是出现
优点:
- 软件包丰富
- 文档化帮助信息很友好,简单易学
- 兼容性好,跨平台
- 对统计分析天然支持
- 有RStudio这种大杀器
缺点:
- 对文本处理不是很灵活,尤其是和Python对比
- 当数据大的时候,尤其涉及读写文件,感觉效率不是很高(也可能是我自己不会优化)
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、rmr2、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