你好,游客 登录 注册 搜索
背景:
阅读新闻

精通R是一种怎样的体验?

[日期:2015-01-05] 来源:知乎  作者:知乎 [字体: ]

知乎用户:肖凯,喜爱玩数据的人

先说一下自己理解的“精通R”。

      和其它的通用型语言不同,R是专注于数据分析的语言,也就是domain-specific language。从这个角度看和matlab、SAS是比较类似的。

      因此,与其说精通R,不如说精通数据分析的方法

      但是数据分析又是分领域的,不同的domain有不同的数据分析方法。且看官网上的task view都有几十个了,从生物信息的数据分析到自然语言处理的数据分析,应有尽有。进入不同领域的数据分析之前,需要具备起码的基础专业知识,否则数据意义都理解不了。

      因此,与其说精通数据分析,不如说精通某个专业。

      R有5000个包,每个包后面可能都有一篇专业论文的支撑,不可能每个都精通。就像是一个有5000个面的钻石,我只能看到某些面。只熟悉关于统计、机器学习、文本处理等一些常用的方法和包。其它的也不在我掌握之中了。

再说一下熟悉R之后的感受。

      有助于打通多个专业的知识。有一句说的很好,统计学家可以随意的进入其它学科的后院。因为很多专业的数据方法是通用的。例如看一篇疾病预测的论文,其中对基 因筛选使用就是互信息方法。这正好也是文本挖掘中,对空间向量模型降维的一种方法。掌握的东西越多越会融合在一起,也会遇到越来越多的新奇东西。就这样从 一个后院跳到另一个后院,会看到整个格局,比较有趣。

      对数据的思考和实践都比以前快。类似于五笔打字,熟练的人看到一个字,不用思考如何去拆字,手指会自动跳到相应的部首键位上去。我现在看到数据,可以直接用R的函数来思考怎么折腾它。

      可以更好的赚钱和交朋友。这个就不用多说了。

知乎用户:顾志耐,数据炼金术士

  @肖凯 写到了R出色的一方面,我来说点不出色的方面。我大概接触R四年多了,现在倒是用的越来越少了,只有画图的时候才会用到,随着我对R更加熟悉,我就更加想抛弃R

  我以前是经济学科班出身,在学R之前只会半调子水平的C和熟练的VB6,初学R的时候,我很高兴能够有一个十分灵活的工具,R的dataframe是一个非常不错的想法,这样的设计很好地满足了在处理数据的时候既要把数据分观测值来考虑又要分变量来考虑的需求。R对dataframe的灵活操作也比 STATA的egen等命令方便许多。作为开源软件的爱好者,我对能掌握一种新的开源工具也十分满意,至少不用再去用盗版的STATA了。R和LaTeX 的联动也让我这个TeX用户非常满意。之后又接触到了ggplot2这个优雅而华丽的绘图系统,改变了我对数据可视化的认识,给了我一套新的看待统计图形的视角。后来又去听了R会议,参加过一些统计之都的活动,觉得R的社区还是比较活跃的。

  但是,随着我用R用的越来越多,我觉得R的基础架构实在难以让我满意,用一门程序设计语言的标准来看,实在太粗糙了。相信很多用过R的人都为R的read.table/read.csv函数的报错而抓狂,而且光看错误信息又很难知道出了什么错,用得多了,凭经验才能定位到出错的地方。R的显式循环慢的令人发指,需要写成apply系函数,有些时候 apply系函数也不能令人满意,还需要调用C的扩展。当我开始需要自己去写一些算法的时候,我发现R的面向对象程序设计太简陋了,完全无法满足我的要求。S3 Class将所有东西都视为list和vector的组合,实在说不上好用。很多R包都不是用R写出来的,这就导致R更像是一个把不同东西粘合起来的胶水。R有着很多好的思想,但是R自己实现地并不好。R把所有东西都读入内存这点则成为了R的致命缺陷。在学术界,数据量都很小,这点完全不会暴露,但是在业界搬砖的时候,这个问题让我完全没法去用R。

  R还有一个问题是封装的太过严重,大部分东西都是以一个黑箱的形式呈现给用户的,这导致的一个直接问题就是大部分R的用户都只有使用黑箱的能力。我初学R的时候也是这样,我还曾因为自己可以依赖各种黑箱而使得自己论文中的模型复杂程度远胜其他人而窃喜,现在回想起来,那真心是Naive的中二时代。随着我统计学的知识逐步积累,我发现自己不会的东西越来越多,只有当我能明白一个东西的原理的时候我才会去使用这个封装好的工具。如果需要使用黑箱,那我明显更倾向SAS,我相信SAS的品质,而R包的质量实在参差不齐。直接在不明白原理的情况下去使用黑箱,很可能没有用对,而自己又不知道,最后就得到了错误的结果。

  另外,熟悉R的过程可能会促进向程序员的转型,黑箱用多了,总会触发自己制造轮子的渴望的,我就是这样一步步学起了数据结构等一堆相关的技能,然后就这么逃离了经济学,之前看到一个经济学需要掌握哪些编程语言的问题的时候,发现好多人也都是这样的感觉。

  我现在R用的越来越少了,只有在画图的时候才会拿起ggplot2,还是要膜拜Hadley大神,不过现在Python下也有了ggplot2项目,我会去尝试pull request,希望我能为完善那些R里面想法很好但是R自己实现的不好的东西贡献一点力量。

    其实以上两位用户的体会都各有千秋,还是那句话只有适合自己的,实用的才是最好的体验。

    原文链接:http://www.zhihu.com/question/27357092





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款