--- 大师大师,讲讲你的R语言学习经历吧。
··· 我只说给懂的人听。
前言:人生若只如初见
断断续续的,我和R语言已经结缘快有四年了。四年来,从懵懵懂懂到可以直面自己的不足,由当初的好奇到现在的日常。回首向来,步履蹒跚,一路走来,几多欣喜。R语言是我学习一门语言的一个缩影,回顾回顾于我是有益的。
我现在依然离不开R语言的帮助系统,任何一门语言的使用都离不开。你要是问我在学习R语言方面的捷径,我总结起来有两个时间点是有突变的:
- 知道有R语言这个东西
有了这两点,辅之刻意练习就可以开启精进之路了。以下的几个方面是我这几年来走过的路,和大家分享。
2015.10--2017.10:一个孤独漫步者的独白: baseR
2015年的时候我是一个研究生,学院有规定每月必须完成至少两立场学术报告的听讲。你知道的,学院一规定,这件事就容易变成一个形式。有一次陪女友去听学术报告,本来是打算签个到就走的,只是外面太热了,就在报告厅多坐了一会。这一会里面我听前面的教授说:做学术R语言是非常适合的:免费,容易上手,统计和绘图很多强大。
也许很多人并没有当做一回事,其实我也没当做一回事,只是在某个熬夜无聊里,时间实在无法打发,就试图安装个R软件玩玩。那一夜安装了R和Rstudio,这也许是最重要的一步,没有这一步后面的故事以及目前赖以为生的职业也就无从谈起了。
很多入门的书我都没正经地看过,《R语言核心技术手册》《R语言实战》我在图书馆不到两天就翻完了,像字典一样的东西。这两本书让我知道R语言可以干嘛,以及如何做到。
然后就是在平时拿R来打发时间,直到在另一场报告中,作为中场休息,我写下了自己第一行R代码:一个循环来处理data.frame,其实是一个96孔板的数据。我开始用R来处理自己的数据。从不会读写数据到绘出第一张箱线图,摸摸索索,身边也没有一个用R的人,唯一的鼓励就是看博客上人们写的教程,让我觉得并不孤独。
后来,女友做毕设的时候需要处理病原菌数据库里面的数据,数据库肯定有很多的数据啊,于是我用刚刚入门的R语言帮女友处理数据。就是在这样的情况下,一个人仅靠书本和互联网算是做了两个项目。
往事历历在目,我的学习几乎都是发生在早上和晚上。大部分的时间是把各种error信息往浏览器里面放,再点击之前做一个祷告:希望能得到解答。
学习是一种修行:
種豆南山下,草盛豆苗稀。
晨興理荒穢,帶月荷鋤歸。
道狹草木長,夕露沾我衣。
衣沾不足惜,但使願無違。
2017.12--2018.12:消失的生态学家:vegan
如果说第一阶段是无组织的游击战,那么2017年7月我加入现在供职的工厂,算是找到了队伍。在这支队伍里,我的R语言得到了一次进阶。在第一阶段不得不感谢一个人:王先生。他可以说是我遇到的第一个用R语言的人,在那段时间也扮演了浏览器的角色。
入职之后我是一个全职生物信息工程师,每天不管会不会用到R我都会打开Rstudio。物理上的接近是最直接的学习方法,要不然就是叶公好龙,这也是我不断买书的一个动机:喜欢什么就去靠近。
在三个月的试用期过后,我开始认真开启自己的学习计划:抄书。首先是找到一本书,这本书不是纯理论的,而是从事某一行业的应用类的R语言书籍。然后是运行里面的代码,同时理解代码背后的生物学逻辑。这样我就遇见了《数量生态学:R语言应用》这本赖江山老师翻译的书。从2017年12月开始我一章一章地重现书中的分析点,降维,聚类,PCA,CCA,RDA,NMDS等等数量生态学分析的基本套路在我搬砖的同时借助Google加深了对R语言以及数据分析的认识。
然后是另一本书《环境与生态统计:R语言应用》这本书里更加侧重模型的构建与解释,在完成三分之二后,我突然转向现在的领域:单细胞,虽然数据分析的基本方法没有变,但是毕竟不是同一个领域,就停更了。
这两本书与其说是我学习R语言的进阶书籍,不如说是我数据统计的入门书籍,大量的统计基本常识都是在这里面获得的。组间差异检验,终于有人讲清楚了!在没有做任何推广的情况下阅读量已经达到两万多了,数量生态学笔记:R语言应用和环境与生态统计:R语言应用的笔记阅读量加一起也有小10万了。在R语言中文社区的R语言入门推文被评为该公众号2018年年度文章。
2017.12--2018.12,在这一年里,我依然勤勤恳恳地像个农夫。统计的基本知识,数据探索,多元分析,一个R包(vegan)的系统学习。这就是我在R语言道路上的第二个台阶。
2019.01--2019.08:记住一个人的名字:Hadley Wickham
说实话,写这篇文章的动因是这一部分:我觉得自己的R语言又上了一个台阶。
我时常阅读,都是不记作者名字的:吃鸡蛋不管谁下的。我也没有关注过Hadley Wickham,尽管距离我第一次购买他的《ggplot2:数据分析与图形艺术》已经快三年了。今年以来我在简书更新《R语言数据科学》R for data science
这本书的学习笔记,可以说非常的粗略,就是看看 Tidyverse有哪些包可以执行哪些任务,简化什么操作,一个字还是抄。
但是这本书真的把我拉到了新的认知境界,特别是dplyr数据处理,管道的应用,purrr迭代,这刷新了我的R语言世界观。从此之后R语言世界有两类人一类是使用tidyverse套件的人,一类是不使用的人。Hadley Wickham丰富了R语言,发展了R语言,Hadley Wickham的贡献是巨大的,它极大地简化了我们的数据分析工作流程。
我现在的感觉就像刚刚登上泰山玉皇顶,虽然觉得这境界很美妙,却说不出它的好。最近在看他的《R包开发》,虽然现在还没有好的想法足以开发出一个R包,但是可以通过这本书了解R包开发过程以及一个R包的基本结构。在这个阶段,我还需要一段时间来慢慢适应。
2019之后:依然是我的处女地
在学习和使用R的过程中,我总希望找一个阶段,以让自己可以停止下来做其他的事情。2015.10至今用过perl,Python,R从来没停过,好几次企图开始学机器学习可是有一次又一次换回R语言了。至今,关于R还有长到看不到边际的路要走。
四年了,我还没有开发过一个R包。只是知道基本的函数以及编程知识,S3与S4的编程模式还不清楚。如何高效运行R脚本,提高运行效率?如何执行版本管理?能写简单的Markdown,对于Shiny只写过一个简单的可以做venn图的工具。
R语言虐我千百遍,我待R语言如初恋。还有很多领域没有涉及,还有许多有趣的事情没有与R做过。我不会停止:
懦夫永不啟程,
弱者死於途中,
只剩我们前行,
一步都不能停。
下一步,R会从哪个侧面介入我的生活?
结语:书籍是人类进步的阶梯
我的学习每一步都没有离开书籍的陪伴,是一本又一本的书,不断在充实我的学习之路。在上学的时候,最喜欢在图书馆,在书架中间慢慢地走着,偶尔翻开看看某本突然感兴趣的书。在书籍之中,我终于找到了自己的学习路径。
我与R语言之间的桥梁是R语言相关的书籍搭建起来的,我所付出的不过是时间,而这时间和书的作者比起来又算得了什么!
哇!四年了,又有了新的感觉。