【R语言学习5】R语言常用数据结构解读

1R语言数据格式概述

R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。

向量:存储数值型、字符型或逻辑型数据的一维数组。

矩阵:每个元素拥有相同的模式(数值型、字符型或逻辑型)的二维数组

数组:与矩阵类似,但维度可以大于2

数据框:与矩阵类似,有行和列两个维度,数据框的每一列可以是不同的模式,但每个组件长度需相等,即类似于每个组件长度都相等的列表。

列表:对象的有序集合,例如某个列表可以是若干向量、矩阵、数据框,甚至其他列表的组合。

如下图所示的各个数据结构示意图。

2向量

向量是用于存储数据的一维数组。可使用执行组合功能的函数c()可用来创建向量。而向量又可根据不同类型分为数值型向量、字符型向量和逻辑型向量,分别为:

a <- c(1, 2, 3, 4)  ##数值型向量
b <- c("one", "two")  ## 字符型向量
c <- c(TRUE, FALSE)  ## 逻辑型向量

需要注意的是单个向量中的数据必须拥有相同的类型或模式,同一向量中无法混杂不同模式的数据,即不能在一个向量中既出现字符型向量又出现数值型向量,而且对于字符型向量,需加引号,数值型向量和逻辑型向量R可自动识别。

在R语言中,我们可以通过在[ ]中给定元素所处位置的数值来访问向量中的元素。需注意的是与python语言的0代表第一个元素不同,R语言中第一个元素以1为起始即想要查看向量a中的第3个元素,则可直接输入a[3],得到3,也可使用向量符号查看第2和第3个元素。

3矩阵

矩阵是每个元素都拥有相同的模式(数值型、字符型或逻辑型)的二维数组。实际上,矩阵是不同维度的向量的结合,在R语言的学习过程中,对于不了解具体函数使用方法时,我们可使用【R语言学习3】R语言程序包来源与使用方法简介提到的帮助函数,输入?matrix,可以看到在输出的结果中为我们介绍了matrix(创建矩阵)、as.matrix(转换为矩阵)、is.matrix(判断是否为矩阵)的使用方法。这样我们就可以了解matrix()的函数的使用方法,进一步学会创建矩阵。同样的数组也可通过array()创建。

4数据框

数据框是我们在R语言应用中最常见的数据格式,与我们传统意义上的表格相似,同样的我们可以通过?data.frame查看函数的使用,这里我们为大家演示具体的使用:

patientID <- c(1, 2, 3, 4)  ## 创建ID数值型向量
age <- c(25, 34, 28, 52)  ## 创建年龄数值型向量
diabetes <- c(“Type1”, “Type2”, “Type1”, “Type1”)  ## 创建类型字符型向量
status <- c(“Poor”, “Improved”, “Excellent”, “Poor”)  ## 创建状态字符型向量
patientdata <- data.frame(patientID, age, diabetes, status)  ## 创建相同长度为4行的数据框

需要注意的是在创建数据框时每个向量的长度需相等,通过输入patientdata或者直接点击Rstudio中的数据标签我们可查看数据:

与向量相同的是可以通过在[ , ]中给定元素所处位置的数值来访问数据框中的元素,逗号前输入行的位置,逗号后输入列的位置,例如我们想查看前4行前2列的数据,可输入patientdata[1:4, 1:2]或者直接输入patentdata[,1:2],不输入具体位置默认代表所有行。

另外在R语言中我们在位置较多难以计数的情况下常需提取某列数据,这时则可以使用$来选择数据框中的列,例如patientdata$age,在Rstudio中会自带提示功能不用手动输入。然而使用$只能选取一列,若要选取多列,则可以将列名变成向量进行提取,如patientdata[c("patientID","age")],即提取以patientID和age作为列名的所有数据。

列表与数据框的创建类似,唯一的区别是可以是不同长度,这里我们不再赘述。

参考文献:

卡巴科弗. R语言实战[M]. 人民邮电出版社, 2016.

为促进知识更加有效的传播,科研创新服务平台在文字推送的基础上已在千聊直播间开展《R语言在生物医学中的应用》系列课程,欢迎扫码关注。

(0)

相关推荐