4. 向量矩阵和数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. 向量矩阵和数组相关的知识,希望对你有一定的参考价值。

 

4.1 向量

4.1.1 序列

除了使用冒号运算符之外,R还支持其他函数创建更为通用的序列。其中,seq函数最为常见,能以许多不同的方式指定序列。在平常使用中针对不同的场景,我们有以下三类函数可供使用,他们运行效率更高且更易用,满足了特定场合的使用。

seq.int 可创建一个序列,序列的范围由两个数字指定,还可以设置步长,值得注意的是虽然seq.int以int结尾他同样支持创建浮点数形式的序列,如

 seq.int(0.1,0.01,-0.01)
 [1] 0.10 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01

seq_len函数:创建一个从1到输入值的的序列

seq_along函数:创建一个从1开始,长度是输入向量长度的序列

pp <- c( "peter", "piper", "picked", "a", "peck", "of", "pickled", "peppers" )
for( i in seq_along(pp) ) print(pp[i])
[1] "peter"
[1] "piper"
[1] "picked"
[1] "a"
[1] "peck"
[1] "of"
[1] "pickled"
[1] "peppers"

PS:在阅读官方文档后,如果不是特别追求运行效率或者你的序列特别长时,建议还是掌握seq()的使用方法

4.1.2 长度

我们可以通过length函数查到这个值。缺陷值也会被计入长度。

4.1.3 命名

R向量的一个大特性就是能给每个元素命名。通常,标记元素可使得代码可读性更强。

 x <- 1:4
 names(x) <- c( "apple", "bananas", "kiwi fruit", "" )
 x
     apple    bananas kiwi fruit            
         1          2          3          4 

4.1.4 索引向量

通常,我们只要访问向量中的部分或个别元素。这就是所谓的索引,他用方括号[]实现。

1.若给向量传入正数,它会返回此位置上的向量元素切片。他的第一个位置是1(同行python是0)  

2.若给向量传入负数,它会返回一个向量切片,里面只有除了负数绝对值位置上的所有元素

3.使用which函数可以返回逻辑向量为TRUE的位置,若将逻辑索引切换到整数索引中,这个函数将很有用

x <- (1:5)^2
which(x > 10)
[1] 4 5

4. which.min和which.max分别是which(min(x))和which(max(x))的缩写

4.1.5 向量循环和重复

rep函数非常适合此类任务,它允许我们重复使用元素来创建矢量

rep(1:5, 3)
 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

 4.2 矩阵和数组

数组是多维的矩阵,所以除了行和列之外,数组还需要维度dim参数

4.2.1 创建数组和矩阵

数组:array()

矩阵:matrix()

4.2.2 行、列和维度

对于矩阵和数组,dim函数将返回其维度的整数值向量

对于矩阵而言,函数nrow和ncol将分别返回行数和列数

4.2.3 行名、列名和维度名

与输出维度函数类型,显示行名、列名和维度名的函数为rownames()、colnames()、dimnames()

4.2.4 索引数组

索引矩阵与索引向量类似。若要显示所有元素,只需空置对应的下标即可

4.2.5 合并矩阵

可以使用cbind和rbind函数按行和列来绑定两个矩阵

 cbind(a_matrix,another_matrix)    ##横向合并
      ein zwei drei vier funf sechs
one     1    5    9    2   10    18
two     2    6   10    4   12    20
three   3    7   11    6   14    22
four    4    8   12    8   16    24
 rbind(a_matrix, another_matrix)  ##纵向合并
      ein zwei drei
one     1    5    9
two     2    6   10
three   3    7   11
four    4    8   12
five    2   10   18
six     4   12   20
seven   6   14   22
eight   8   16   24

4.2.6 矩阵算术

数组和矩阵支持标准算术运算符(+、-、×、/),除了这些矩阵还有如

转置

t函数可用于转置矩阵 t(a_matrix)

内乘

a_matrix  %*%  t(a_matrix)        ##内乘

外乘

1:3 %o% 4:6   #外乘,o为outer的含义

矩阵的逆

使用solve函数可以很简单的实现矩阵的求逆

以上是关于4. 向量矩阵和数组的主要内容,如果未能解决你的问题,请参考以下文章

从向量创建矩阵,其中每行是向量的移位版本

[Python系列-14]:人工智能 - 数学基础 -4- 数组元素的线性代数运算(向量矩阵运算)

Matlab报错:串联的矩阵维度不一致

R语言实战-数据类型-1(标量向量矩阵数组)

[Python]-机器学习Python入门《Python机器学习手册》-01-向量矩阵和数组

R语言基础-向量|矩阵|数组|数据框|数据IO|实用函数