【生信菜鸟经】如何系统入门R语言

写在前面

R语言不仅在生物信息数据处理中发挥着重要作用,也是其它主流数据处理人士的首选工具。现在非常多自学生物信息学的小伙伴必须学的就是R,所以写一个R的系统性入门指导是非常有必要的。我作为老一辈的生信工程师,所以喜欢perl一点,排斥python。我也稍微看过一些python的语法,个人认为R和python几乎是一模一样的。R的特点就是内置了大量的函数,基本上你认识的英文单词都可以是一个函数,即使不是,你也可以自定义为函数。搞清楚了函数和变量,就可以看懂大部分的R代码了。

那么多编程语言,有何异同?

下面是生信菜鸟团QQ群管理员赵云对这3种编程语言的心得体会!(菜鸟发言,如有误导,概不负责!)

  • python跟perl都是高级语言, 两个开发的目的不同, perl更面向过程一些,优势是严谨,快。 python主流面向对象编程, 这个跟R类似, 数据结构等方面有些不同,但可以互相调用。 实际上以上三者之间可以互相调用部分功能。python的语法并不是很严谨,个人感觉,越偏向自然语言的编程语言越通俗但不严谨,以上,是跟C比较的。
  • R本身起源于S语言,是主要针对统计的,也是面向对象的。本质上,是把一个比excel功能强大的软件归零化成了命令行吧。excel高级应用也是要编程的,所以R的初级应用可以当成是没有用户交互界面的excel,细心一点, 把示例代码都打对,当功能强大但不好使版的excel吧, 这样至少心理上不会畏难跟抵触。
  • 内部集成的越多,用户需要做的越少,你用C画个图累死你,用python得写几行,R一行就行了!

~~ 接下来是我写的了,六步系统入门R语言,都是重点 ~~

第一步:掌握必须要会的基础

  • 学习help函数(你必须要把help函数用一百次以上,不然你不可能入门的!)
  • R的特性就是有着大量的包,所以你必须学会安装包: 安装包 install.packages(" xxxxxx ") 加载包 library( xxxxx ) 查看包的帮助文档help("xxxxx") 或?xxxxx 获取当前工作区间getwd() 更改工作区间 setwd( "xxxxxx") 清除当前对象rm() 安装包你一定会遇到错误,请参考: R包终极解决方案!(http://www.biotrainee.com/thread-144-1-1.html) R的包(package)(http://www.bio-info-trainee.com/579.html)
  • 你必须要自学R语言基础,或者看书,或者看视频,或者有人手把手教你,书的话,我推荐:《R in Action》、《The Art of_R Programming》。这些书籍都会提供一些简单的测试代码,你跟着傻瓜式的敲代码就好,但是实践的过程中,请务必注意一些英文单词(file文件路径/Description简述/Usage用法/Arguments参数/Details详细/value 数值/Examples例子/header 表标题/logical_value 逻辑值/delimiter 分隔符/object 对象/col列/row 行/vector向量/dimensions维度/data数据)

第二步:明白R中的变量

  • 向量和因子:向量特简单,没什么好说的,因子太复杂了,我说不清楚,你们慢慢理解。
  • 数据框:就像我们的表格,第一行就是每一列的名字,我们称之为字段,或者变量名。那么对应每列下面的数据就叫做记录或者观测。用data.frame( 字段1,字段2,…. )创建 )
  • 列表:与数据框类似,区别就是每一列向量类型和长度可以不一致。用list( 字段1, 字段2,….. )创建
  • 数组:其形式就像我们玩的模方,每一个面都是一个矩阵数据,用array(数据,各维度的最大值,各维度的名称)

第三步:了解变量的基础操作函数

  • 变量怎么来,对它们处理什么? 我们处理生物信息学数据一般很少会手动创建这些对象,都是从文本里面读取,比如kegg数据库文件,差异分析结果,RNA-seq的表达量矩阵,但是读入之后,我们的重点就是知道它们变成了什么,该如何去一步步的转换它们。
  • 数据的特性函数也必须要知道,无非就是一些英文单词而已,你经常的玩一下,就慢慢的熟练了。(str,class,names,row.names,col.names,length,unique,view,min,max,summay,table)

第四步:可视化你的变量

了解了R里面的基础变量和对象,也学会了对它们进行简单的转换,接下来就可以尝一尝R的甜头了,对任何数据都可以可视化,简简单单的就可以画一大堆的图。 plot,boxplot,barplot,pie,hist,pair,它们每个绘图函数都有自己要求的输入数据,特定的可视化结果,请务必在还没熟练使用之前help一下它们,自己主动查看它们好玩的地方,好好自学。

dev.new()新建画板 plot()绘制点线图,条形图,散点图. barplot( ) 绘制条形图 dotchart( ) 绘制点图 pie( )绘制饼图. pair( )绘制散点图阵 boxplot( )绘制箱线图 hist( )绘制直方图 scatterplot3D( )绘制3D散点图. 低级绘图函数: par() 可以添加很多参数来修改图形 title( ) 添加标题 axis( ) 调整刻度 rug( ) 添加轴密度 grid( ) 添加网格线 abline( ) 添加直线 lines( ) 添加曲线 text( ) 添加标签 legend() 添加图例

它们还有一系列的绘图参数(坐标轴、图例,颜色,性状,大小,空白,布局)非常繁琐,想掌握,花费的时间会非常多,但是很多人直接跳到ggplot的绘图世界了,不想搞那么多底层绘图代码。但是我看过一个底层R绘图集大成者,就Combining gene mutation with gene expression data improves outcome prediction in myelodysplastic syndromes文章的作者的github里面有。但是对大部分人来说,生信的绘图,都是有套路的,其实都被别人包装成函数了,做好数据,一个函数就出了所有复杂的图。比如热图,cluster等等。

高级可视化不得不提ggplot了:

如何通过Google来使用ggplot2可视化

用谷歌搜索来使用ggplot2做可视化(下)

第五步:数据对象的高级操作

前面我们对向量,数据框,数组,列表都了解了,也知道如何查看数据的特性,但是要进行高级转换,就需要一些时间来学习apply系列函数,aggregate,split等函数的用法。这是一个分水岭,用好了你就算是R入门了。也可以用一些包,比如reshape2,dplyr。

当然,R里面的字符串对象是另外完全不一样的操作模式,建议大家自行搜索学习。

第六步:遨游R的bioconductor世界

这个是生物信息学特有的,也是为什么我要求搞生物信息学数据处理的人必须学习R,就是为了应用大量的bioconductor包。在这里面所有的对象都不在是基础的向量,数据框,数组,列表了,而是S3,S4对象,这个高级知识点我就不推荐了,你学会了前面的东西,就有了自己的学习经验了,后面的分分钟就搞定了。(其实你永远也搞不定的)

  • 每学一个bioconductor的包,都是自己R水平的提升。大家可以参考我的博客:http://www.bio-info-trainee.com/tag/bioconductor 我就是这样学习过来的。我还创建了bioconductor中国这个社区,可惜效果不好,有志者可以继续联系我,我们看看有没有可能做起来。
  • R语言的应用方向。当然R肯定不只是应用在生物信息学啦,其实它在非常多的地方都有应用,尤其是金融和地理。在如何一个方向学习R,就不仅仅是R本身的语法了,你需要学习的东西太多了,我简单列出几个我接触过的方向吧:统计,科学计算,数据挖掘,文本挖掘,基础绘图,ggplot绘图,高级编程,都有着丰富的书籍和视频资料。

炼数成金的R七种武器系列。(强烈推荐,全套视频很容易找到) 《A Handbook of Statistical Analyses_Using_R》 《Modern Applied Statistics With S》 《Introduction to Scientific Programming and Simulation Using R》 《Mastering Scientific Computing with R》 《Practical Data Science with R》 《Data Mining explain using R》 《ggplot2 Elegant Graphics for Data Analysis》 《R Graphics Cookbook》 《R Cookbook》 《R in a Nutshell》 《R Programming for Bioinformatics》 《software for data analysis programming with R》

看完以上这些,你就是R大神了。当然,前提是你看懂了也会灵活应用

有小伙伴建议我继续以送视频送书籍的方式来增加浏览量,比如我网盘里面有几千本R语言的PDF书籍,也有十几套视频,但是,我这一篇总结写的太好了,我不想被利益被污染了,希望你可以转发给有需要的人,你的朋友会感激你的转发,让他了解这么多生信前辈的经验分享公众号!

补充:R语言学习的网络资源

写在最后

借鉴一个生物信息学习方法:知识和耐心,是成为强者的唯一方法

  • 通过阅读来学习:阅读经典的教材、代码、论文、学习公开课。
  • 通过牛人来学习:同行的聚会、讨论、大牛的博客、微博、twitter、RSS。
  • 通过练习来学习:代码练习题、参加kaggle比赛、解决实际工作中的难题。
  • 通过分享来学习:自己写笔记、写博客、写书、翻译书,和同伴分享交流、培训新人

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-02-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

P1064 金明的预算方案

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布...

3418
来自专栏CDA数据分析师

手把手教你用Python分析豆瓣电影——以《我不是药神》《邪不压正》为例

《我不是药神》是由文牧野执导,宁浩、徐峥共同监制的剧情片,徐峥、周一围、王传君、谭卓、章宇、杨新鸣等主演 。影片讲述了神油店老板程勇从一个交不起房租的男性保健品...

2453
来自专栏PPV课数据科学社区

用 Python 做文本挖掘的流程

作者:肖智博 来源:https://zhuanlan.zhihu.com/p/19630762 点击阅读原文可进入超链接。 收集数据 数据集。如果是已经被人做...

4328
来自专栏张善友的专栏

C#数学计算包 Math.NET

Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支持线性代数的解析器,分析复杂...

2685
来自专栏CDA数据分析师

为什么说 Python 是数据科学的发动机(二)工具篇(附视频中字)

毋庸置疑,Python是用于数据分析的最佳编程语言,因为它的库在存储、操作和获取数据方面有出众的能力。 在PyData Seattle 2017中,Jake V...

20910
来自专栏企鹅号快讯

数据分析:寻找Python最优计算性能

1、场景描述 在数据统计分析过程中,求累计值(总和)是最常用的统计指标之一,市面上的各种流行数据库均支持的查询方式基本如下: select sum(c) fro...

2137
来自专栏数据小魔方

R语言数据清洗实战——世界濒危遗产地数据爬取案例

最近重复新翻阅R语言领域唯一一本关于网络数据采集的参考书——《基于R语言的自动数据收集》,开篇就是一个数据爬取的案例。 尽管之前已经粗略的看过一遍,但是仍感书中...

4916
来自专栏熊彪的专栏

精准测分:基于函数调用关系链的用例消振算法 ( 上帝视角 )

地球文明不是孤岛,函数呢?从静态的视角观察函数,她只是一个一个在文件中孤立存在的代码片段。但从动态的视角观察,函数与函数之间就天然的发生了关联。这个关联是怎么产...

1790
来自专栏程序人生

谈谈状态机

题记:上周做 BBL 里讲了我们 Tubi TV 内部做 DSL 的一些简单实践,大家反馈不错。有同事建议我给大家先补补 FSM,之后再进阶 CFG,可能会更顺...

3047
来自专栏灯塔大数据

每周学点大数据 | No.40单词共现矩阵应用

No.40期 单词共现矩阵应用 Mr. 王:这个算法的优势在于,它的 key 空间相比前面的词对要小得多,这意味着它能够更好地利用 combiner。 但是这种...

28411

扫码关注云+社区