R-数据科学(八):矩阵

本文中关于矩阵的内容仅限于R中数据结构,并不涉及线性代数里面的概念。

在R的数据结构中,矩阵就是折叠的向量,所以对于数值型向量的运算也可以用在矩阵上。

矩阵的本质

在介绍矩阵的运算前,我们得明白一个概念循环补齐,这对我们认识矩阵的本质有很大帮助,所谓循环补齐,就是当长度呈倍数关系的两个向量进行运算时,R会自动按照较长的向量的长度,将较短的向量重复,直到和较长的向量等长。

循环补齐示例:

vec = rep(1:4,4)
vec
##  [1] 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

a = 1:4
a
## [1] 1 2 3 4

vec/a
##  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

既然我们说矩阵就是折叠的向量,那么对于一个矩阵是否也会存在同样的操作呢,答案当然是yes。

m = matrix(vec,nrow = 4,ncol = 4) # 默认向量按列填充为矩阵
m
##      [,1] [,2] [,3] [,4]
## [1,]    1    1    1    1
## [2,]    2    2    2    2
## [3,]    3    3    3    3
## [4,]    4    4    4    4

m/a
##      [,1] [,2] [,3] [,4]
## [1,]    1    1    1    1
## [2,]    1    1    1    1
## [3,]    1    1    1    1
## [4,]    1    1    1    1

通过上面两个例子,我们可以清楚的看到,虽然一个是向量,一个是矩阵,但是与另外一个向量进行运算时产生了相同的结果,只是呈现方式不同罢了。理解了矩阵的本质,那么能够对向量进行的运算,就可以理所当然的用在矩阵中

矩阵的运算

向量矩阵共用函数

x + y          # 相加
x - y          # 相减
x * y          # 相乘
x / y          # 相除
x %% y         # 求余
x %/% y        # 整除
x ^ y          # 指数

abs(x)         # 求绝对值
sqrt(x)        # 平方根
log2(x)        # 2为底的对数
log(x)         # e未底的对数
log10(x)       # 10为底的对数
log(x,base=n)  # 对X取n未底的对数
exp(x)         # 指数
sin(x)         # 正弦
cox(x)         # 余弦
tan(X)         # 正切

ceiling(x)     # 取顶
floor(x)       # 取底
trunc(x)       # 取整

round(x, digits=n)  # 将 x 舍入为指定位的小数
signif(x, digits=n) # 将 x 舍入为指定的有效数字位数

矩阵特有函数

rowSums()       # 每行和
rowMax()        # 每行最大值
rowMin()        # 每行最小值
rowMeans()      # 每行均值
rowMedians()    # 每行中位数

colSums()       # 每列和
colMeans()      # 每列均值

本博客内容将同步更新到个人微信公众号生信玩家。欢迎大家关注~~~
在这里插入图片描述

你可能感兴趣的:(R-数据科学)