R语言数据结构-数据框&矩阵&列表

Python013

R语言数据结构-数据框&矩阵&列表,第1张

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)的有序集合

数据框(data.frame)是R中最常处理的数据结构。

函数:data.frame(col1,col2,col3,....,row.name=NULL, check.rows = FALSE, check.names=TRUE, stringsAsFactors = default.stringsAsFactors())

其中的列向量col1, col2, col3,...可为任何类型(如字符型、数值型或逻辑型),每一列的名称可由函数names指定;

row.name用于指定各行(样本)的名称,默认没有名称,使用从1开始自增的序列来标识每一行;

check.rows用于用来检查行的名称和数量是否一致,默认为FALSE;

check.names来检查变量(列)的名称是否唯一且符合语法,默认为TRUE;

stringsAsFactors用来描述是否将字符型向量自动转换为因子,默认转换,若不改变的话使用stringsAsFactors = FALSE来指定即可。

每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。

先构建向量,再组成数据框。

直接用data.frame函数构建数据框。

R语言的下标索引是从1开始的,且下标索引为负数的话表示删除某个元素。

[] 可进行索引,括号内对应的是[行下标, 列下标]。

[1] 1 2 3 4 5 6 7 8

[1] "four"

[1] 1 2 3 4 5 6 7 8

[1] "four"

[1] 1 2 3 4 5 6 7 8

[1] "one" "two" "three"

attach、detach和with()

函数attach()可将数据框添加到R的搜索路径中。

函数detach()将数据框从搜索路径中移除。

函数attach()和detach()最好在你分析一个单独的数据框,并且不太可能有多个同名对象时使用。

with()就是把所有操作都限制在数据框上。

The following objects are masked by .GlobalEnv:

[1] 1 2 3 4 5 6 7 8

[1] "n1" "n2" "n3" "n4" "n5" "n6" "n7" "n8"

[1] 8

[1] 3

[1] 8

[1] "name""values" "values2"

[1] "r1" "r2" "r3" "r4" "r5" "r6" "r7" "r8"

[1] 8 3

[1] "data.frame"

[1] "numeric"

[1] "character"

Length:8 Min. :1.00 Min. :1.00

Class :character 1st Qu.:2.75 1st Qu.:2.75

Mode :character Median :4.50 Median :4.50

Mean :4.50 Mean :4.50

3rd Qu.:6.25 3rd Qu.:6.25

Max. :8.00 Max. :8.00

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE