本文中关于矩阵的内容仅限于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() # 每列均值
本博客内容将同步更新到个人微信公众号:生信玩家。欢迎大家关注~~~