R语言编程艺术#02#矩阵(matrix)和数组(array)

本文详细介绍了R语言中的矩阵和数组操作。包括矩阵的创建、赋值、运算,以及数组的多维特性。讲解了apply()函数的应用,并讨论了如何处理异常值。此外,还对比了向量和矩阵的差异,并提到了如何避免意外降维。最后,探讨了高维数组在统计学中的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数。所以矩阵也是和向量一样,有模式(数据类型)的概念。(但反过来,向量却不能看作是只有一列或一行的矩阵。

数组(array)是R里更一般的对象,矩阵是数组的一个特殊情形。数组可以是多维的。例如:一个三维数组可以包含行、列和层(layer),而一个矩阵只有行和列两个维度

 1、创建矩阵

矩阵的行和列的下标都是从1开始,如:矩阵a左上角的元素记作a[1,1]。矩阵在R中是按列存储的,也就是说先存储第一列,再存储第二列,以此类推。

> y <- matrix(c(1,2,3,4),nrow=2,ncol=2)
> y
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> y <- matrix(c(1,2,3,4),nrow=2)
> y
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> #按列输出
> y[,2]  #输出第二列
[1] 3 4
> 

为矩阵中的元素赋值

> y <- matrix(nrow = 2,ncol = 2)
> y
     [,1] [,2]
[1,]   NA   NA
[2,]   NA   NA
> y[1,1] <- 1
> y[2,1] <- 2
> y[1,2] <- 3
> y[2,2] <-4
> y
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> 
>#与上面的代码效果相同
> y <- matrix(c(1,2,3,4),nrow = 2)
> y
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> 

默认在R中矩阵是以列进行存储的,但通过byrow = T,参数可以将矩阵进行按行存储

> y <- matrix(c(1,2,3,4),nrow = 2, byrow = T)
> y
     [,1] [,2]
[1,]    1    2
[2,]    3    4
> 

2、一般矩阵运算

常用的矩阵运算:线性代数运算、矩阵索引、矩阵元素筛选

   #线性代数运算

线性代数运算包括:矩阵相乘、矩阵数量乘法、矩阵加法等

> y <- matrix(c(1,2,3,4),nrow = 2)
> y
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> y %*% y #矩阵相乘
     [,1] [,2]
[1,]    7   15
[2,]   10   22
> 3*y     #矩阵数量乘法
     [,1] [,2]
[1,]    3    9
[2,]    6   12
> y+y     #矩阵加法
     [,1] [,2]
[1,]    2    6
[2,]    4    8
> 

  #矩阵索引

> z <- matrix(c(1,2,3,4,1,1,0,0,1,0,1,0),nrow = 4)
> z
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    1    0
[3,]    3    0    1
[4,]    4    0    0
> z[,2:3]    #提取z中第2、3更
     [,1] [,2]
[1,]    1    1
[2,]    1    0
[3,]    0    1
[4,]    0    0
> 

给矩阵赋值 

> z
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    1    0
[3,]    3    0    1
[4,]    4    0    0
> z[c(1,3),] <-matrix(c(1,1,8,12,16,20),nrow = 2)   #给z1,3行进行赋新值
> z
     [,1] [,2] [,3]
[1,]    1    8   16
[2,]    2    1    0
[3,]    1   12   20
[4,]    4    0    0
> 

利用行号负值,移除行或列

> y <- matrix(c(1,2,3,4,5,6),nrow = 3)
> y
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> y[-2,]      #移除第2行
     [,1] [,2]
[1,]    1    4
[2,]    3    6
> y[,-2]      #移除第2列
[1] 1 2 3
> 

  #矩阵元素筛选

矩阵跟向量样也可以进行筛选,只是语法上不同而已 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值