分享

(生信篇)R语言学习第2天-R语言数据结构

 风雨都停了 2018-06-22

大家好,承接第1天的内容,今天我们介绍R语言的数据结构。

作为开场白,我本该说:无论我们是用R作图还是进行统计分析,首先是要输入我们的数据,由于R中不同(作图)函数或参数只接受特定的数据结构,如果输入的数据结构不对,R就会报错,我们也就无法作图或继续后续分析,因此数据的准备是数据分析以及作图的重要前提,同时,了解R的数据结构,也十分有助于我们了解R的工作方式。

而我想说的是:这一部分确实比较让人头疼,小爷我刚入门的时候,看了好几遍都不知道它讲的是什么鬼(不过我从小到大一直都觉得自己是只笨鸟),尤其那什么列表啊,因子啊,看后唯一的收获是认识了它的中英文。现在回过头来看,我觉着吧,对于这一部分,不用急着一下子掌握,过上两遍,了解一下它们是怎么创建的怎么访问其中的元素以及会用简单的函数就很好了。在以后的脚本中,你会反复看到这些数据结构的身影,那时再反过来学习,想不掌握都不可能。狠心透露一个小爷我学语言的独门秘籍:看脚本,模仿,做项目。

现在,让我们正式开始“走马观花”吧

首先,了解下R中常见的数据类型,大学学过点计算机的应该很容易理解,包括数值型(numeric)、字符型(character)、逻辑型(logical

其次是“对象(object)”的概念,R采用面向对象的编程风格,其实不必纠结于对象是什么,但是要知道什么是对象,这很重要。在R中,一个数字,一个向量,一个函数的计算结果都是对象。所有的对象都有两个内在属性:类型和长度,二者可以通过mode()length()得到。顺便提一句,R是区分大小写的,Xx表示的是不同的对象。

那么又一重要概念来了,R语言的6中数据结构:向量(vector)、矩阵(matrix)、数组(array)、数据框(data frame)、因子(factor)以及列表(list)。

向量

向量是用于存储数值型、字符型、逻辑型数据的一维数组,常用函数c()可用来创建向量,

利用[*]下标取向量中的某个元素,第一个元素的下标为1(区别于perlpython等语言第一元素的下标或者说索引为0)。


其他创建方法如seq(可创建等差序列),rep


对向量可进行多种函数操作,如sum(),min(),summary()以及“+ - */”等等。


注意,同一向量中不能混有不同类型的数据! 

矩阵

学过线性代数的各位,对这个概念应该比较熟悉,矩阵是一个二维数组,每个元素拥有相同的数据类型(数值型、字符型、逻辑型)。功能函数matrix()可以用于创建矩阵。


其他运算

ginv() :求逆

diag() 提出对角线

det()计算代数和

数组

与矩阵类似,但数组的维度可以大于2,相当于矩阵的延伸,不如矩阵的使用频率高。数组可以通过array()函数来创建:


数据框

数据框很常用,不同于矩阵,同一数据框内可包含不同类型的数据。可通过data.frame将若干向量组成数据框,但向量必须有相同的长度或长度有倍数关系,如果其中有一个比其它的短,它将按循环法则循环整数次。


因子

名义型变量和有序型变量在R中称为因子,可以使用factorgl创建因子。

如果对因子还是没有概念,可以试着看这个例子,比如我们有5个肿瘤样本(Case)5个正常样本(Control)R语言中可以用下面方法标识这10个样品属性。

因子的种类称为水平(level),上面的sample因子有两个水平:CaseControl。假设expression为某个基因的表达量,通过tapply函数结合sample这个因子即可计算肿瘤和正常样本中这个基因的平均表达量。

列表

列表允许整合若干(可能无关的)对象到单个对象名下,其对象可以是目前讲到的任何结构(向量、矩阵、数据框等),功能函数list()可用于创建列表


 

 

That’s all. Thank you!



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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多