分享

对于没有编程经验的人,R 语言是否很难掌握?

 pgl147258 2015-04-02

【茉茉的回答(39票)】:

不難。不過我覺得脫離統計背景學 R 沒什麼實際意義。

如果你是初學,給你這個自學一下,例子都很簡單很攢信心:R for Beginners

然後呢,作為一個懶銀,我自己寫的時候習慣用這個,太方便了:戳!

也有個 data mining 的版本,不過感覺不很時進:戳戳!

另外我一直不覺得自己算掌握了 R,或者說我沒覺得我需要掌握它,我也從來沒有開發自己的包的雄壯心智。But,這一點也不影響我想要科學且正確地利用好它的美好願景。如果說想了解如何掌握的話,可以去這個人的主頁看看或與之取得聯絡:http://renkun.me/

【肖凯的回答(40票)】:

1,学R的价值要看你未来的工作中涉及到数据的难度和频繁程度。如果你的职业生涯永远只是偶尔用一下透视表这种难度和频度,那你可以不学R。如果你会更频繁的使用重复性简单的数据操作,或者更深入的探索数据,那你需要R。R不止是统计中用到,它同样可以看作是一个脚本语言,一个比excel强大很多的工具,会让你在前期投入的时间得到回报。head first data analysis这本书最后就谈到了R,可以看看它的建议。

2,学习R的前期难度是一般的语法规则,这并不太难,到后期真正比较难的是背后的理论知识。SPSS这种软件把理论包装成一个菜单点击,这很方便初学者,但也隐藏了理论上的为什么。这类菜单点击软件就好象是跟团旅游,方便、省心、适合新手,但不够深入。R语言就好象是自由行,自由、灵活、定制性强,但对自身的能力要求高。SPSS就象一把砍刀,简单好用,但等你功力提升后就没有兴趣再用它。R就是一柄剑,它需要使用者有足够的内力(理论)去使用它,而且是使用在合适的场景下,功力不足者容易受伤。

总结一句话,在你不同的阶段,会有适合你的不同工具,时机到了自然会想去学。

【moonkey的回答(10票)】:

从楼主的问题来看,我觉得您在R语言的学习过程中,遇到的困惑主要不是来自编程知识匮乏,而是统计知识匮乏。

我觉得从编程的角度来说,能顺畅地看懂帮助文档,就离掌握这门语言不远了。从这个角度来说,R语言的大多数功能都是面向统计应用的,如果没有足够的统计知识的话,您读它的帮助文档都会觉得痛苦,所以个人觉得在学习R的过程中,统计知识远重要于编程知识。

学习一门语言的目的就是能在工作或生活中有所应用。我觉得心中如果没有应用的情境的话,学习曲线甚至可以说是无限长的。楼主可以先想想自己工作生活中是否有非R不可或者R明显优于其他工具的地方,否则大可不必为此过多劳神。说到底都是些工具,顺手与高效最重要。

【任坤的回答(14票)】:

谢邀。最近工作很忙,一直想回答这个问题,已经有这么多很好的回答了,感谢 @茉茉 提到我那更新缓慢的小博客,这里我就自己学习和使用R的体会做一些回顾和总结。

首先,我在我的renkun-ken/learnR @ GitHub 项目中比较系统地介绍了一下R是什么(http://renkun.me/learnR/quick-start/what-is-r.html)。简而言之,R是一套主要致力于统计计算、数据探索、数据分析、数据可视化的一个编程语言、计算环境、社区以及生态系统。如果题主的学习背景和工作与这些毫不相关,并且毫无背景知识(例如统计学)和基本训练(例如基本编程),那么短期来看学习R的难度是不小,并且收益难以评估,可以说没有明显的收益。但是我相信没有多少人愿意为自己的前途划定一个不可逾越的限制,而帮助你突破这些限制的往往就是看起来「没有作用」的缓慢积累。

因此,我鼓励题主学习R这样的强大工具来优化自己的思维方式,理由我在金融专业学生如何从基础开始学习计算机?中已经作出了充分的说明。不过有一个前提是,最好是先把计算机本身弄熟练一些,再使用计算机中更加高级的工具,例如我在精于哪些软件能为求职增添优势?中回答的那样,先把Excel这种容易上手、可见即可得的工具掌握熟练一些(先满足务实的基本需求),之后才比较容易上升到较为抽象的编程世界(再满足更高层次的精神需求)。

另外,用学习时间长短来衡量学习效果,对于编程几乎是无效的。学习1年,没有真正开发过比较全面的项目,其实水平远比不上学习半年,做过好几个实战项目的人。因为有时间压力的实战训练,才是真正能够提高水平的学习方法。

还有,我想帮助题主澄清几个观念。与其把R简单地看作一个「统计软件」,不如说R除了是一个统计软件,即统计计算环境之外,而是一门设计完善的编程语言,更加是一个快速成长的社区,是能够将非IT领域的前沿知识(例如最新的统计工具)快速转化为生产力的生态系统。在学习中最基本的就是掌握R作为编程语言的语法规则(syntax),之后就是通过学习和各种项目积累处理各种数据的手法、流行扩展包的使用技巧等等,在此过程中参与到社区当中去,去看大家在Stackoverflow: R Questions中的问答,参与到GitHub中托管的上千个R扩展包的issue report和改进中,在这个过程中你学到的R才是有灵魂的,才是与时俱进的;如果只是自己看教程,不实战、不参与社区互动,那么你学系到的R就是死的,没有灵魂,不会更新,很快就将被你的大脑清除出去。

当然,如果只是希望学习到最基本的层次,例如简单地操作一点数据等等,那完全没有必要把R学得很精深,只需要按照在线课程掌握基本的一些函数和表达式即可。

因此,我对「对于没有编程经验的人,R语言是否很难掌握?」这个问题的回答是「比较难」。就好象「对于没有游泳经验的人,游泳是否很难掌握?」「对于没有素描经验的人,素描是否很难掌握?」「对于没有炒股经验的人,炒股是否很难掌握」,回答都是「如果只是跳进去泡两下」「如果只是勾几笔」「如果只是下单撤单」,那么回答就是「很简单」;如果真的要严肃的「游泳」「素描」「炒股」...天下的任何事情,回答都是「比较难」。

如果不是「比较难」的话,那么R在数据科学中领域中的薪资回报就不可能是最高的了。

===

稍微补充,最近把http://renkun.me/learnR/项目弄成了一个Gitbook,在缓慢更新中,里面涉及了统计、金融领域需要掌握的从基础到高级的R的主要内容,下面是个简单的大纲,可以自测R的学习水平。

Quick start: What is R? Why R? How to install R? RStudio, First model

Basic objects: Vector, Matrix, Array, List, Data frame, Function, Formula

Basic expressions: Assignment, Condition, Loop

Basic functions: Environment, Package, Object, Logical, Character, Math, Statistics, Data, Graphics

Basic statistics: Preparing data, Descriptive statistics, Linear regression, Hypothesis testing, Model analysis, Time series modeling

Basic data mining: Using models, Cross validation

Basic grahpics: Scatter plot, Line plot, Bar chart, Pie chart, Histogram, Composing plots, Partitioning plots, Graphics devices

Inside R: Lazy evaluation, Dynamic scoping, Object searching, Memory management, dot-dot-dot, Functions, Environment, Expression, Call

Data structures: S3 object, S4 object

Database: SQL, Excel workbook, SQLite, SQL on data frame

Parallel computing: parallel package

Functional programming: Anonymous functions, Closures, Higher-order functions

Profiling: Computing time, Memory usage

Advanced graphics: Interactive graphics, ggplot2, ggvis

Popular-packages: stringr, reshape2, rootSolve, Rsolnp, plyr, dplyr, data.table, pipeR, jsonlite, Rcpp

===

最后,赞同 @茉茉 的说法,脱离了统计和计量的基础使用R没什么太大意义,就好象给你一个强大的扳手,结果你根本不认识什么是螺丝钉。

【乔脆的回答(5票)】:

推荐一本书----

豆瓣链接:The Art of R Programming (豆瓣)

本人(同无编程经验,大学修过统计学这门课但是本人非常学酥)正在开啃,体验非常不错.

另,推荐豆瓣阅读大超哥的连载 豆瓣阅读

还有一个online的R教学站:https://www.datacamp.com/

主要发起人之一是数据分析与统计推断 Data Analysis and Statistical Inference Coursera的朋克(?)女教师~~~

再补充一个新发现的极度friendly的解救python(C/Java....)零起点初学苦手的交互学习网站

Learn to code 可以说是边玩边学~~

同样适用于零基础的同学,本人follow中

关于R:

对于无编程经验和需要用户界面的同学,可以下载Rstudio的版本~

和python一样,R是几种通过短期学习就能尝到甜头的语言.虽然python更加易写易懂,但是R在多变量统计以及数据可视化方面非常吸引我.

SPSS大学时候有过上机课,体验非常痛苦;而R给我的感觉是简洁,一行function或者data.frame可以代替excel中很多步骤,并且也不会想SPSS一样哗啦啦出来一大片.

总之,个人理解是,R提供的是定制化的服务,轻巧,精准,深入.

我认为学点编程是大有裨益的,也值得长期累积投入.光是想想掌握了这门新舞器以后能分分钟出数据做炫酷可视化就斗志昂扬了呐~~.在程序猿男票的影响下(很多工作中的数据分析用excel根本就是石器时代style),于是本文科"表妹"也开启了缓慢的编程之旅.

共勉~

【SeanGo的回答(3票)】:

R在数据分析领域很有前途, 想在这一领域有所成就, 必然要学习R, 未来一定有高额回报. 吐槽:R跟SPSS和EXCEL从来就不是一个层面的东西, 比如R可以做时间序列分析, 可以做数据挖掘, 可以做决策分类树. 楼上几位你们这么比较, R知道吗? 下面答题:

1. 适用范围上, R并不适合做一门编程入门的课程, 他不是通用的编程语言,适合做数据分析,尤其是算法层面上。

2. 初学者很难从帮助文挡获得帮助,那一跎跎的 ... 啊

3 . 在r中有三种编程范式: 过程范式,函数范式,面向对向范式.

过程范式 (面向过程_百度百科) 简单理解就是一系列的指令按照预先制定的顺序执行,与人类的直觉相吻合,这是初学编程的人比较容易掌握的.

函数式编程就不同了,这里有函数范式的简单例子:

使用 R 编写统计程序: 第 2 部分. 函数式程序设计和数据探索

Simple functional programming in R · Bioinformatics Zen

面向对象(面向对象编程_互动百科) 则有另外的编程思想,想用好也需要专门的训练.

(好吧, 我相信光听这些名字就不知所云了)

4. R有一些坑, 比如循环太慢, R (software): How much can loops slow down a program in R, and what are some good ways to avoid them?

4.5 这可能也解释了为什么R有数不清的包, 大家想做点什么事情,就用别的语言(C/C++/Fortran)做一个R的扩展包,然后扔到R里调用. 或者在外面调用R, 我自己绝不在R中写过多的代码的, 有点浪费生命的感觉.

5. 写代码 和 '写好'代码 和 写'好代码' 有非常大的差别,需要长期不断的学习和实践.

因此, 我对题主的建议是, 先分别学习统计和一门比较通用的编程语言,比如Python, C, 然后再学R, 如果你需要用到的话.

谢邀, 以上.

【李慕白的回答(1票)】:

题主你好,我最近也在上这门课,觉得并不难,但可能需要一些统计背景和软件经验。

推荐一本非常好的统计与R的入门书,统计建模与R软件 (豆瓣),网上有电子版。保证简明易懂,让你兴趣盎然。它的好处还在于第一章专门讲了基本概率统计知识,您可以填补一下。另外R的语法规则不能说难,但却有些特别。一开始不习惯很正常,这不是最大的障碍。

下面回答你的问题:

1. 对于一个未来不从事于编程、工程、金融的人(假设是HR),实用价值不大,因为此类工作中几乎根本不会用到R所擅长或主要做的事情。需要进行简单统计的事情,Excel绝对可以搞定,还能够清晰地展现给别人让人家理解,为什么要舍近求远呢?学习Excel,建议先熟悉基本函数,数据透视表,再VBA,规划求解,等等。如果精通Excel,你可以做的事非常多,转行做精算吧,嘿嘿。

2.1 如果你想申请经济会计类专业,建议主打Stata加Eviews,SPSS他们也会用,不过有很多功能SPSS做不到。但你要学的话,先学SPSS,很好上手,很快见效。接着再学Stata和Eviews,都不难的。

2.2 如果你想申请金融工程类专业,或其他理工科专业,加油吧骚年,R必须拿下啊,全世界各个专业研究者都喜欢它。它开源又小巧,强大又优美,有什么理由不爱呢。

【bitting304的回答(1票)】:

本人从事基因组选择育种方法的研究。原来也没有一点编程基础,但感觉R入门还是比较简单的。现在用R感觉越来越爽,小巧灵活,免费!!!当然选好入门教材很重要,个人也推荐《统计建模与R软件》,有了基础概念后可看的书就多了

【知乎用户的回答(1票)】:

针对题主你的问题,做以下简要回答:

1.衡量学习一门编程语言的价值大小,应该不完全取决与是否从事相关工作,更多的是在于你是否感兴趣或者说是是否明确自己的学习目的,这个问题我认为换做是学习任何一样知识都可以这么理解。很多暂时看来无用的知识,总会在一些不可预见的时候发挥他的作用。即便是屠龙之技也算是一项特殊的个人技能,聊胜于无吧。

2.我不了解R语言,但身为码农的我,深知一点,语言这种东西终究只是一种工具,管他是R语言、P语言、Q语言,只要是语言他就是工具,只要是工具他就得有操作手册,从这个角度来看,就跟你买了一个最潮的电子产品是一样的,只要有说明书还怕不会用么,你需要的只是一个熟练过程罢了。

【赵澈的回答(0票)】:

刚好我也修完了那个R的MOOC,推荐题主看看这里对这门课的评论,R编程 R Programming Coursera

然后你就会知道其他答主所说的R自身的难度是一方面,另一方面是这门课的设计真的比较差劲。

【Steven的回答(0票)】:

上班途中乱入,手机答题。

根据题主的描述,我认为题主可以考虑掌握一下Excel。轻点鼠标即可完成图表制作,一般性的统计检验在加入相应模块后也可以胜任。另外office软件一般办公室都会安装。

SPSS软件来源是一个问题,一般企业不是专业岗位不会装着的。其次以题主介绍的背景,我认为SPSS上你能用上的功能Excel上都可以实现。

R语言对矩阵,统计等背景知识有一定的要求,如果题主是抱着开拓眼界,技多不压身的心态,建议同时学习数理统计和R语言

有时间补充一些R语言和Excel相关学习资料。

【高晨的回答(0票)】:

我现在都在用一些图形化界面,可以大大降低门槛。

强推rkward。谁用谁知道~

【知乎用户的回答(0票)】:

1.你一个既不从事数学也不从事编程的人学R语言毫无价值,不明白你为什么要去学

2.否,学习编程语言只要高中数学基础就够了,但很奇怪的是你为什么要去学?我认为你学SPSS都是多余的,除非你是为了应试拿证书

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多