前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给R语言初学者的几个建议~

给R语言初学者的几个建议~

作者头像
数据小磨坊
发布2018-04-11 17:10:48
8020
发布2018-04-11 17:10:48
举报

最近有很多人在问我关于R语言学习入门的问题。

有在公众号文章留言的,有后台回复的,有加qq或者微信直接交流的、有知乎私信或者文章留言的,还有微信群里直接@我的。

说实话,这个话题,如果由一个在数据科学领域叱咤多年、项目经验丰富,代码写的很溜的老司机来回答,结果会更有信服力。

而我并不适合来回答这个问题,理由如下:

  • 首先我的学习周期很短,正式开始于2016年的9月份,算起来仅有10个月左右,有点速成的意味;
  • 其次我在学习R语言之前并没有任何的编程基础(如果不算大学修过的SQL和自己只会一点儿皮毛的VBA的话);
  • 第三我是一个文科生,没有很强大的数理基础和统计背景。

但是如果换一个角度来思考,我又觉得我很有资格来回答这个问题,理由如下:

  • 作为一个文科编程小白和数学盲,我更懂和我一样编程零基础、数学又不好的初学者在初次接触R语言之时,内心的困惑和挣扎;
  • 按照我的学习周期及其效果来看,我的学习效果得到了实战检验和诸多读者的认可;
  • 我的R语言学习之旅是在大学校园里完成的,而非是在职场的强压下被逼无奈之下开始的,所以不带很多的功利性和企图速成的快节奏,同样也是按需去学,学的都是真把式和投入回报率最高的部分,所以对于基础的把握及学习的节奏的经验更值得大家借鉴。

下面我开始我的回答(biaoyan!!!)

关于学习初衷:

首先我想说的是,在打算学习R之前一定要先问自己一句,你学习R语言的目的是什么?

是大学专业课程的需要?或者提前储备自己的数据分析技能?还是为了应对职场压力,被动充电?亦或者仅仅一时心血来潮,看到如今的大数据发展的如火如荼、不由自主的来凑一波热闹?或者是纯粹只是为了兴趣、实现自己的某些想法。

因为目标定位不同,意味着你能为此打算花费的时间长度不同、付出的心血不同、学习的路径不同、学习学习的模块不同,达到的效果也不同。

一定要确定好目标,按需去学,否则你在入门之前就首先会陷入迷茫和困顿,因为R语言除了内置的几个基础包之外,CRAN上可用的有不下上万个扩展包,如果再算上GitHub上 托管的个人开发的小众包,可能有好几万了,掰着指头数一数,够学一辈子了。

关于对R语言的理解:

这里我讲一下自己对于R语言的理念,我不想重复那些已经被转播烂了的概念解释、发展历史、及其功能简介。

R语言是统计学家开发的,出生之初就决定了它的使命是统计计算和数据可视化,这算是R语言核心功能的两个大方向。

对于这两个方向而言,统计计算的学习,基础都在课堂理论与专业背景上,说实话,R语言只是提供了一个实现的平台而已,它并不该改变或者创造新的理论、模型。

而这些统计计算所使用的公式、用到的模型算法,大部分都被封装成一个个扩展包里,导入包之后,仅需调用对应函数、设置对应参数即可,这些函数与Excel里面的函数本无区别,无需恐惧。

至于参数的调优、模型的检验与优化,这些东西所依赖的知识背景,也基本都是来源于课堂学习和专业背景,与R软件的关系并不大,对于需要自己写算法的情况,你也仅是在函数的基础上按照成熟的理论算法进行调优和计算,这与软件无关(除了基础语法之外),而与软件之外的专业背景和行业经验有关。

说到底,对于统计学习这一块,重要的是理论背景、业务经验、而真正需要R来实现的,仅仅是内置的扩展包函数、基础语法而已。

类比一下SPSS的学习,一个不懂统计学的人很难学好SPSS,尽管他知道各种功能模块和菜单(比如我),同样,一个不懂统计学和数学的人也难学好R语言(统计计算模块),尽管他很熟悉R语言的基础语法和很多扩展包所能实现的功能(比如我)。

而对于R语言的数据可视化方向来讲,则稍有不同。数据可视化确实并不十分依赖数学(除了专门用于算法呈现的图形之外,很少有需要大量运算的),但是他高度依赖图形语法,依赖可视化视觉呈现理念。

R语言中被疯传有四套语法(分别是基础图形语法、高级图形语法、lattice语法、ggplot2语法)。但是遗憾的我只会其中之一——ggplot2。

我学东西的初衷很纯粹,要把一个东西做好,不是一般的好,而是要令效果赏心悦目、达到惊艳众人的目的,最重要的,要让老板赞不绝口(难道你不想升职加薪嘛)。

这就意味着我要学一套优雅、高效、兼容性强、更加贴近可视化理念的语法。因为我的精力和时间不容许我把付出的心血平摊在四条任务线上,毕竟我的多任务处理能力极差。

倘若贪多,这样造成的后果可能是,每一套都语法都能懂一些,但是每一套都表现平平,这是我不能容忍的。而ggplot2对我来说既是绝佳的选择。

即便如此,语法熟练或者说能够顺记于心就真的够了吗?当然不是,即便能能够熟记于心,也并不能保证自己能够游刃有余的实现自己的想法,因为数据可视化除了依赖实现的工具和平台语法之外,更多的是对于数据源的理解、对于可视化的理解、对于设计理念的融会贯通(怎么去配色、怎么去排版、怎么去搭配字体等)。

如果说软件的学习也遵循二八定律的话,我觉得,R语言的学习也是如此。

百分之八十的精力需要花费在软件之外的统计学理论背景、业务知识(可以自学呀),而需要使用R软件来实现的部分,不要干巴巴的去学(当然R语言的基础语法要牢固),理论搞透了很多事情就会水到渠成,迎刃而解了。这一点特别体现在对于统计与数据分析的学习上。

而数据可视化则需要你在牢固掌握基础上(基础语法运用、数据清洗技能),能够熟练运用一套图形语法(推荐ggplot2),然后不要过于将精力放在工具和代码本身,而是多积累可视化素养和提升设计审美水平。(这里我将数据可视化的二八定律稍稍修改一下,五五定律比较合适,因为ggplot2不是很好掌握)。

至于设计、审美、创意这些柔性的东西,很难去通过一两本书或者一两套课程搞定,这些是内化于生活,积累于日常的点点滴滴,当然如果有意识的去通过一些课程、书籍慢慢培养,日积月累也会见效的。

关于R语言学习技能路径:

通用技能学习:

基础:数据结构、变量类型、数据导入/导出、数据合并追加、长宽转换、数据索引、切片、聚合。

进阶:正则表达式、合并与分列、匹配与替换、缺失值插补、去重与排序,控制流:循环与判断。

专用技能学习:

统计与分析:去学课本吧

数据可视化:ggplot2语法+设计+审美+创意

基本上只要自己的通用技能学的差不多之后,就没有必要一直钻在这个小圈子里来回转了,可以自己去找数据做案例,案例是最好的学习,进步大多源于案例中解决未知问题的能力。

我没有读过很多R语言的书,所以这里还是不荐书了,如果你真的有心去学,还用别人荐书吗,看下豆瓣的图书榜就成了。

平时多用搜索引擎去解决临时性问题,基本上你遇到的问题,前人在网络上都已经给出了很详细的答案。

回答一些初学者的问题:

1、R语言是不是需要很深厚的编程基础,我编程基础基本为0,是不是不适合学这个?

我在学习R之前编程基础也为0的,有编程基础那叫程序员,程序员学习R语言都不用眨眼的~

2、学习R语言是不是需要很厉害的数学背景,我是文科生,数学超级差,是不是学不会啦!

握个手,我情况跟你一样,也是文科生,数学超级差,如果你打算往数据挖掘方向转型的话,可能需要补一下高数、线代、概率论统计与算法的东西,如果仅是作为业务分析工具、可视化之用,可能你的数学水平已经超越门槛了。

3、我R语言学了很长时间,好像也有一年了,看了很多书,所有的基础语法都会、ggplot2也都理解,但是就是自己写代码的时候写不出来,画图的时候干着急。

你是不是一直在看课本,一直在看,连练习代码都是copy课本上的,你做过多少实战案例,分析过多少真实业务数据、有多少新知识是在课本之外的实战过程中解决的,多看不如多练。

4、求地图模板!!!

抱歉,我不提供模板,我只提供代码和案例数据!(R语言很难做成模板)

5、你好,在吗,可以帮我画个图嘛~

……(我想说一句不在的)

6、可以推荐一下入门书吗?

其实我并不觉得R语言的入门需要入门书,因为我在入门阶段也没有照着书去学,但是既然大家提出来这个问题,我还是给些建议吧,如果你是在校学生,时间充裕,推荐《R语言实战》,不过一定要有选择性的去看,不要通篇看,前面几张关于数据结构、变量类型、数据清洗的要好好看(略过概念性和纯解释性内容),中间统计学习部分按需酌情去看,最后的文档报告输出部分谨慎去看(LaTeX和HTML你不一定能用得到的)。

数据可视化推荐两本吧,《R语言可视化手册》、《ggplot2:数据分析与图形艺术》(首选第一本,比较接地气,第二本虽然是作者本人大作,但是立意较为独特、高远、对初学者不是很友好)。

如果你是职场人士的话,那么并不十分推荐以课本为主,因为工作时间占用太多,不可能抽出大量时间用于练习,推荐工作之余利用碎片化时间听一些在线课程。(入门可以听免费的,天善智能社区就是很好地免费课程学习平台,我自己在天善智能也有开课哦,而且里面有大数据主题的多门免费课程,此外网易云课堂里也可以淘到很多好课)。免费课程用于入门,然后借助接触一线业务数据的机会,多把R语言用工作实践,你会进步的更快。

7、小魔方,你是如何学习R语言的,可以传授一些经验吗?

这个问题我太不好意思回答了,不过我还是舔着脸讲一下吧,我属于实战派,平时练习都是直接使用爬虫抓网络上的数据,实习的时候也是能用R的场合坚决不用Excel,逼着自己找R语言的使用场景,然后通过微信公众号、知乎专栏和个人博客进行持续性的内容输出(强迫自己去持续练习)。

当然,打捞基础很重要,否则只能每次写代码的时候都放着笔记本在身边,那里不会看哪里(很浪费时间的)

善用帮助文档,R语言中有强大的帮助系统,你可以直接进入扩展包的文档主页, 也可以使用?info来搜索某个函数的详细使用方法及参数设定规则。

保证规律性的练习,每天都要抽出固定时间来练习,具体安排视个人的具体情况。

最后给一句忠告,一门用于数据分析的编程语言,其只有用于数据分析实战才能发挥作用,就像老虎只有在森林里才能具备兽王的野性,所以一旦感觉自己掌握了基础之后,最后的进阶方式就是用于实战。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云课堂
云课堂聚焦教培机构 OMO 转型,为机构提供在线及混合式课堂解决方案,极速开课、多向互动、智能沉淀、一键分发,是教培课堂便捷、稳定的教学助手。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档