R 数据集的概念、向量、矩阵和数组|学习笔记

简介: 快速学习 R 数据集的概念、向量、矩阵和数组。

开发者学堂课程【R 语言编程基础R 数据集的概念、向量、矩阵和数组】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/564/detail/7715


R 数据集的概念、向量、矩阵和数组

 

内容介绍

数据集的概念

R 的数据结构

向量

矩阵

数组

 

一、数据集的概念

1、按照某种格式来创建数据集,是任何数据分析的第一步

(1)选择一种数据结构将导入数据进行存储

(2)将数据输入或导入到这个数据结构中

2、向 R 中导入数据有很多方便的方法,可以手工输入数据,这只针对数据集比较小工作量不大的情况也可以从外部源导入数据,数据源可以是电子表格(EXCEL)、文本文件(txt)、统计软件(SAS)和各类数据库(MySq|)等从外部源导入数据是经常使用的 R 导入数据的方法

3、数据集通常是由数据构成的一一个矩形数组,行表示记录,列表示属性(字段)以假想的病例数据集进行举例

image.png

有四行记录五个属性这样的数据是 R 中常见的一种数据集

 

二、R 的数据结构

1、R 拥有许多用于存储数据的对象类型,包括向量、矩阵、数组、数据框和列表。它们这种创建的方式有时候不需要访问数据集中所有的数据比如定位到其中的某一行某一列数据等等访问的方式或者方法都是有所不同的

2、这些数据结构在存储数据的类型、创建方式、定位和访问其中个别元素的方法等方面都有所不同。

image.png

数据框体现的是各列的模式可以不同列表体现的是各个元素可以不一样第一个元素可以存储向量第二个元素可以存储一个数组第三个放一个矩阵等等这就是列表所能实现的数据的存储功能

 

三、向量

1、向量可以存储数值型或者复合型逻辑性数据的一维数组执行组合功能的函数c 括号可以用来创建向量

2、比如使用 a 存储向量这个向量是1,3,5,7,2,-4,那么使用 c 括号就可以创建一个名为 a 的向量向量的内容是1,3,5,7,2,-4。

a <- c(1,3,5,7,2,-4)

1 3 5 7 2 -4

3、向量不仅可以存储数值型还可以存储字符型b 创建了三个字符串的一维向量

b<- c("one","two", "three")

"one " "two" "three"

4、可以放入一些逻辑值因为创建的是逻辑值所以不需要引号

-c <-c(TRUE ,TRUE ,FALSE,FALSE,TRUE )

这就是存储逻辑性一维的向量

5、注意单个向量中的数据它必须要拥有相同的类型比如以上列举的三个向量a 存放的是数值型当在创建时输入数字是可以的但是如果输入数字又输入字符串这个是不允许的

比如 a <- c(1,3,5, "one")原本1,3,5是想作为数字进行存入但是在输入字符串时它会默认将输入的1,3,5看作是字符串所以 R 在创建向量时其中的数据必须是相同的类型或者模式

6、当创建一个向量后如果不需要提供所有的元素需要对其中特定的元素进行访问时需要如何访问

(1)单独元素访问的方式有很多比如想要访问向量 a 中第三个元素就可以访问到5这个字符串

a[3]

‘’5‘’

(2)也可以这样进行访问

a[c(1,3,4)]

‘’1‘’ ‘’5‘’ ‘’one‘’

(3)还有一个访问方式是从第几个到第几个的元素可以排除

a[1:3]

‘’1’’ ‘’3’’ ‘’5’’

 

四、矩阵

1、矩阵跟向量不一样的地方是矩阵是一个二维的数组它的每个元素也必须拥有相同的模式也就是数值型字符型或逻辑型可以用函数 matrix 创建一个矩阵可以在函数前面加问号就可以打开关于 matrix 的函数的介绍创建的矩阵有多少行多少列

matrix(data = NA,nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)

如果想创建一个2*3的矩阵还是想创建一个3*2的矩阵就可以进行设定,byrow= FALSE 是按列进行填充如果是true就是按行进行填充,dimnames 是定义行和列的名字

2、R 中定义一个矩阵,524连续的20个数字四行五列矩阵是 y

Y<-matrix(5:24,nrow-4,nco1=5)

定义了矩阵的数字包括它有多少行多少列行名列名以及如何进行填充填充不写就是默认按列进行填充所以首先是按照5,6,7,8的顺序进行矩阵的填充后面是9,10,11,12。

[,1] [,2] [,3] [,4] [,5]

[,1] 5  9   13  17  21

[,2] 6  10  14  18  22

[,3] 7  11  15  19  23

[,4] 8  12  16  20  24

3、创建带列名行名标签的矩阵

输入x <- C(2,45,68,94)

rnames <- c ("R1", "R2")

cname <- c("C1""C2 ")

newMatzix <- (x, nrow=2, ncol=2, byrow=TRUE, dimnames=list (rnames, cnames) )

在创建矩阵时报错原因是在创建时没有写函数名

newMatzix <- matrix(x, nrow=2, ncol=2, byrow=TRUE, dimnames=list (rnames, cnames) )

按行进行填充2*2的矩阵

C1  C2

R1  2   45

R2  68  94

按列进行填充修改命令可以得到按列填充2*2的矩阵

newMatzix <- matrix(x, nrow=2, ncol=2, dimnames=list (rnames, cnames) )

C1  C2

R1  2   68

R2  45  94

4、在访问矩阵时也会只访问其中个别元素矩阵对单独元素的访问是通过下标和方括号进行选择举例说明

x<- matrix(1 :20,nrow- 4 )

[,1] [,2] [,3] [,4] [,5]

[,1] 1  5  9   13  17

[,2] 2  6  10  14  18

[,3] 3  7  11  15  19

[,4] 4  8  12  16  20

如果要访问其中的第三行列是考虑所有的列所以可以不用书写

x[3,1]

3 7 11 15 19

比如访问这个矩阵中第二行第三个元素

x[2,3]

10

如果是单独的一列不考虑行

x[,4]

13 14 15 16

5、矩阵是一个二维的数据结构它和向量是类似的它在矩阵中仅仅只能包含一组数据类型所以当维度超过二时就需要考虑其他的数据集

 

五、数组

1、数组与矩阵是类似的但是它的维度大于2,数组是通过 array 函数进行创建输入array 查看这个函数的说明

Array(data =NA dim = length (data), dimnames = NULL)

as. ar ray(x,....)

is. array(x)

在定义一个数组时第一个是数据集第二个是要对数据集的维度进行说明第三个是维度的名字数组的维度可以大于2,比如创建一个三维的数组,2*3*4,可以把三维数组想像成一个立方体

2、通过具体的例子创建数组首先定义数组每一维度的名字第一维有三个名字第二维有两个名字第三维有四个名字

?array

dim1 <- c ("A1", "A2 ""A3")

dim2 <- c("B1", "B2")

dim3 <- c("C1", "C2", "C3", "C4")

这是一个3*2*4的数组24个数字创建数据集直接124定义这个数据集希望它的维度是3*2*4,

d<-array(1:24, c(3,2,4), dimnames=1ist (dim1,dim2 ,dim3) )

这样就生成了一个三维的数据相当于四个矩阵每一个矩阵都是3*2*4的格式

,  , C1

B1 B2

A1  1  4

A2  2  5

A3  3  6

,  , C2

B1 B2

A1  7  10

A2  8  11

A3  9  12

,  , C3

B1 B2

A1  13  16

A2  14  17

A3  15  18

,  , C4

B1 B2

A1  19  22

A2  20  23

A3  21  24

3、数组就是矩阵的推广或者扩充从数组中选取元素的方式跟矩阵也是类似的比如选取数字16,对应的第一维也就是第一行第二维是第二列第三维就是第三个矩阵所以这就是数组定义元素的方法实际上和矩阵是非常类似的

d[1,2,3]

16

4、数组中的元素也只能通过一种模式

相关文章
|
存储 算法 C++
2.1 C++ STL 数组向量容器
Vector容器是C++ STL中的一个动态数组容器,可以在运行时动态地增加或减少其大小,存储相同数据类型的元素,提供了快速的随机访问和在末尾插入或删除元素的功能。 该容器可以方便、灵活地代替数组,容器可以实现动态对数组扩容删除等各种复杂操作,其时间复杂度`O(l)常数阶`,其他元素的插入和删除为`O(n)线性阶`,其中n为容器的元素个数,vector具有自动的内存管理机制,对于元素的插入和删除可动态调整所占用的内存空间。
54 0
|
机器学习/深度学习 索引
深度学习基础:标量、向量、矩阵、张量
深度学习基础:标量、向量、矩阵、张量
968 0
深度学习基础:标量、向量、矩阵、张量
|
搜索推荐
|
C++ 容器
C++学习笔记_15 线性容器-vector容器 2021-05-12
C++学习笔记_15 线性容器-vector容器 2021-05-12
|
存储 算法 Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(上)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(上)
|
存储 SQL Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(中)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(中)
学习笔记: 线性代数-向量的定义
线性代数个人学习笔记
189 0
|
存储 编译器 C++
C++学习笔记(十四)——vector的模拟实现(二)
C++学习笔记(十四)——vector的模拟实现
C++学习笔记(十四)——vector的模拟实现(二)
|
存储 编译器 C++
C++学习笔记(十四)——vector的模拟实现(一)
C++学习笔记(十四)——vector的模拟实现
C++学习笔记(十四)——vector的模拟实现(一)