R语言——5种数据结构
本文首发于“生信大碗”公众号,转载请注明出处
R语言是数据分析和可视化的软件,数据是起点。这篇文章就来给大家介绍一下R中的5种数据结构——向量、矩阵、数组、数据框、列表。
基本概念
首先,我们需要了解一些基本的概念:
1.数据集:即数据的集合,数据集中的每个数据称为该数据集的元素。
2.数据类型(模式):根据分类方式的不同,可将数据分为不同的类型。如数值型变量、逻辑型变量、字符型变量:
图1 数值型变量(numeric,不加引号的数字) 图2 逻辑型变量(logical,不加引号的TRUE或者FALSE) 图3 字符型变量(character,加引号的各类数据)注:函数class()查看对象的数据结构
5种数据结构
接下来,我们就来学习一下数据结构。数据结构就是数据的排列方式。R中主要有5种数据结构——向量、矩阵、数组、数据框、列表。
图4 R的5种数据结构概念:
1.向量(vector)、矩阵(matrix)、数组(array)可以放到一起理解,就是同一类型的数据(数值型、逻辑型、字符型)排列成一维、二维、三维的形式。
2.数据框(dataframe)和矩阵一样也是二维结构,区别在于数据框各列的数据类型可以不同,但同一列的数据类型必须一致。
3.列表(list)就更加包容了,它能存放向量、矩阵、数组、数据框甚至其他列表。
创建与提取
通常情况下我们是将外部数据导入R进行处理和分析,很少直接在R中键入数据,所以创建不同数据结构的方法了解即可,从不同数据结构中提取元素的方法才是重点。
1. 向量的创建与提取:
使用函数c(data)创建向量。
使用[ N ](中括号 + 数字)提取向量的第N个元素。
图5 向量的创建与提取2. 矩阵的创建与提取
使用函数matrix(data=vector, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)创建矩阵:data是用来创建矩阵的数据;nrow、ncol分别指定行数、列数,默认为1;byrow表示是否按行填充,默认为FALSE;dimnames给行列命名,默认为空值NULL。
使用[ i , j ](中括号 + 行、列数)提取矩阵的第i行第j列元素,也可用 [行名,列名] 来提取相应的元素。
图6 矩阵的创建与提取3. 数组的创建与提取
使用函数array(data = vector, dim = c(dim1,dim2, dim3), dimnames = NULL)创建数组:data是用来创建数组的数据;dim指定各维度的长度;dimnames给各维度命名,默认为空NULL。
可以用使用[ x , y , z ](中括号 + 各维度下标)或者 [各维度名称]来提取相应的元素。
图7 数组的创建与提取4.数据框的创建与提取
使用函数data.frame(col1 , col2 , col3 , …)创建数据框:col1、col2、col3分别表示数据框的第1、2、3列(注意:各列的长度要相等)。创建时可以直接给每一列指定列名(如图8中红色框),添加参数row.names可以指定行名(如图8中黄色框)
图8 数据框的创建与矩阵一样,可以使用[ i , j ](中括号 + 行、列数)提取数据框的第i行第j列元素,也可用 [行名,列名] 来提取相应的元素。此外,还可使用美元符号 $列名 提取数据框中某一列的数据。
图9 数据框的提取5.列表的创建与提取
使用函数list(object1 , object2 , object3 , …)创建数据框:object1、object2、object3分别表示要放进列表里的对象(可以是任一数据结构)。创建时可以直接给每一对象命名(如图10中红色框)。
图10 列表的创建列表的提取:[ N ]表示提取列表的第N个对象,也可使用 [对象名称] 或美元符号 $对象名称 来提取相应的对象。
图11 列表的提取需要注意的是使用单个中括号提取出来的对象其数据结构仍然是列表,使用双中括号提取出来的对象才具有是对象本来的数据结构。
图12 单、双中括号提取列表元素的区别今天的分享就到这里啦,快去在R中实操一下吧~我们下期再见!
本文首发于“生信大碗”公众号,转载请注明出处
—END—