R语言基础教程3:向量、矩阵和数组
迪丽瓦拉
2025-05-31 01:47:03
0

文章目录

    • 向量
    • 矩阵
    • 数组
    • 常用的统计函数

R语言系列: 编程基础💎 循环语句
R语言中的向量、矩阵和数组的含义如下

在这里插入图片描述

向量

通过c函数创建的数据结构即向量,向量之间可以进行元素一对一的四则混合运算

> xs <- c(1,2,3)
> ys <- c(4,5,6)
> xs + ys
[1] 5 7 9
> xs / ys
[1] 0.25 0.40 0.50

通过[]可以索引向量中的元素,但是和C, Python等编程语言不同,R语言的索引下标从1开始,并且支持多个值同时索引

> xs[1]
[1] 1
> ys[2]
[1] 5
> (xs/ys)[3]
[1] 0.5
> xs[c(1,3)]
[1] 1 3

通过:表达式,可以不同c直接创建新向量

> zs <- 1:10
> zs[2:4]    
[1] 2 3 4

通过:表达式生成的是特定区间内的自然数组,seq函数则提供了等差数组的生成方式,其输入参数有3个,分别表示数组区间以及元素间隔

> seq(1,10,2)   # 从1到10,生成间隔为2的等差向量
[1] 1 3 5 7 9

通过rep,可以创建元素重复的向量,输入参数分别为待重复元素和重复次数

> rep(1,5)
[1] 1 1 1 1 1
> rep(1:2, 5)[1] 1 2 1 2 1 2 1 2 1 2

矩阵

矩阵的初始化可通过matrix函数,其输入参数为矩阵元素和形状,示例如下

> matrix(1:12, 3, 4)[,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> matrix(1:12, 4, 3)[,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

通过[]可以提取矩阵中的元素,不同维度的序号之间用,分割。

维度相同的矩阵支持常规的加减乘除等运算,此外,R语言提供了便捷的矩阵计算支持,通过%*%可实现矩阵乘法

> m1 = matrix(1:12, 3, 4)
> m2 = matrix(1:12, 4, 3)
> m1 %*% m2[,1] [,2] [,3]
[1,]   70  158  246
[2,]   80  184  288
[3,]   90  210  330

此外,R语言还提供了一些矩阵函数

类别说明
求和按列求和colSums;按行求和rowSums
均值各列均值colMeans;各行均值rowMeans
属性转置t;行列式det;对角元素diag
求积内积crossprod(m1, m2);外积outer(m1, m2)
求解求逆solve;特征值和特征向量eigen

示例如下

> crossprod(m1, m1)[,1] [,2] [,3] [,4]
[1,]   14   32   50   68
[2,]   32   77  122  167
[3,]   50  122  194  266
[4,]   68  167  266  365
> outer(c1, c2)[,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    2    4    6    8   10
[3,]    3    6    9   12   15
[4,]    4    8   12   16   20
[5,]    5   10   15   20   25

数组

数组可理解为张量,从而向量和矩阵均为数组的特殊情况,即分别是一维数组和二维数组。

通过array可以创建高维数组,其输入参数分别为数组元素、数组维度以及各维度名称。

array(data, dim=length(data), dimnames=NULL)

示例如下

> a1 <- array(1:12, dim=c(2,3,2))
> a1
, , 1[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6, , 2[,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

[]同样可以访问数组元素,不同维度之间用,隔开,如果某一维度未声明特定的值,就提取这个维度的所有元素

> a1[1,2,1]
[1] 3
> a1[1,2,2]
[1] 9
> a1[,2,2]
[1]  9 10
> a1[,2,][,1] [,2]
[1,]    3    9
[2,]    4   10

常用的统计函数

在R语言中,提供了一些统计函数,适用于数组、矩阵以及向量等数据结构

函数说明函数说明
sum求和mean求平均值
var方差sd标准差
min最小值max最大值
range取值范围

示例如下

> sum(c1)
[1] 15
> sum(m1)
[1] 78
> sum(a1)
[1] 78
> sd(m1)
[1] 3.605551

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...