注意区分: 数据类型 和 数据组成类型(数据结构)
数据类型 :整型、浮点型、字符型、布尔型(不同的语言不同的叫法)
数据结构 :向量(c())、矩阵(matrix())、数组(array())、列表(list())
注意:这里把 数据框 单拿出来讲(因为它比较特殊)
接下来通过一个实例讲解一下 S4数据结构 。这是我采用clusterProfiler做KEGG富集分析时的一个结果,其采用 S4数据结构 形式存放:
R语言数据结构主要有以下四种:
四种数据结构,重点掌握 向量 和 数据框
判断数据结构的函数: class()
向量的详细讲解在上一篇文章,以下主要讲数据框,矩阵,列表:
以下大部分操作使用的数据框为df
几个重要的函数:查看数据框的行数和列数,行名和列名;以及单独查行的数量,列的数量
数据框取子集有几种方法 : $ 符号,坐标,名字,逻辑值
在 [,] 里,行在前面(左边),列在后面(右边),行与列用逗号 , 隔开: [行,列]
中括号里的逗号,表示维度的分割
数据框按照逻辑值取子集,TRUE对应的行/列留下,FALSE对应的行/列去掉。
修改第二列的列名,就是修改列名这个向量的第二个元素
https://blog.csdn.net/weixin_39718006/article/details/110516670
后续的笔记会有详细介绍
矩阵不能用 $ 符号取子集
t():转置函数,行与列的互换
as.data.frame():转换,把矩阵变为数据框 ,用as.matrix()函数也能把数据框变为矩阵
聚类,相似的行,相似的列会聚在一起。热图自动聚类,行和列的相对位置发生了变化,只是列与列,行与行之间的变化规律。
![热图自动聚类]]( https://upload-images.jianshu.io/upload_images/17511166-f6e2432a04cffbbe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
热图默认聚类,修改参数,不让聚类,热图与表达矩阵对应。
默认的设置不符合自己的预期,可以子啊作者允许的范围内定义。
查看函数帮助文档,参考修改,达到自己的要求。
列表没有列名和行名,只有元素的名字。列表可以由数据框,矩阵,向量,单独的一个数字都可以组成。
列表没有行和列的概念,只有元素,取子集的两种方式: [[]] , $ ,
$ 有两个作用:数据框取子集和列表取子集。在矩阵和向量里不能用 $ 。
用 class() 函数更能具体说明问题, 判断数据结构和数据类型
以上内容是听 生信技能树 小洁老师的 R语言线上课 ,根据自己的理解记录下来,小洁老师授课非常细心,对不同水平的同学都照顾到,并且补充很多技巧以及注意事项。
认识R语言的四种数据结构,小洁老师强调重点掌握向量和数据框,在实战中遇到很多数据结构都是数据框,表达矩阵可以转化为数据框,数据框的一列可以看做是一个向量。小洁老师把实战中会需要的操作融入到练习题,在实战中能联想起小洁老师讲过的知识点。
阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix()创建矩阵。一般使用格式为
其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选
的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)
还是按列填充(byrow=FALSE),默认情况下按列填充
数组(array)与矩阵类似,但是维度可以大于2, 数组可通过array函数创建,形式如下:
myarray <- array(vector, dimensions, dimnames)
其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大
值,而dimnames是可选的、各维度名称标签的列表
由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更
为一般。它与你通常在SAS、SPSS和Stata中看到的数据集类似。数据框将是你在R中最常处理的
数据结构
数据框可通过函数data.frame()创建
其中的列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。每一列的名
称可由函数names指定
每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。由于数据框与分析人员通常设想的数据集的形态较为接近,我们在讨论数据框时将交替使用术语列和
变量
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上
对于字符型向量,因子的水平默认依字母顺序创建。这对于因子status是有意义的,因为
“Excellent”“Improved”“Poor”的排序方式恰好与逻辑顺序相一致。如果“Poor”被编码为
“Ailing”,会有问题,因为顺序将为“Ailing”“Excellent”“Improved”。如果理想中的顺序是“Poor” “Improved”“Excellent”,则会出现类似的问题。按默认的字母顺序排序的因子很少能够让人满意.
你可以通过指定levels选项来覆盖默认排序。例如:
各水平的赋值将为1=Poor、2=Improved、3=Excellent。请保证指定的水平与数据中的真实值
相匹配,因为任何在数据中出现而未在参数中列举的数据都将被设为缺失值。数值型变量可以用levels和labels参数来编码成因子。如果男性被编码成1,女性被编码成2,则以下语句
列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合