这是最后一篇讲解有关矩阵操作的博客,介绍有关矩阵的函数,主要有rowSums()
, colSums()
, rowMeans()
, colMeans()
, apply()
, rbind()
, cbind()
, row()
, col()
, rowsum()
, aggregate()
, sweep()
, max.col()
。
下面通过例子来了解这些函数的用法:
1. 矩阵的行、列计算
我们知道,通过下标索引[i, j]
可以访问矩阵的某一部分,索引如果没有提供意味着“所有行”或“所有列”。来看个例子,比如:
> x <- matrix(1:12, ncol=3)
> x
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> mean(x[,3]) ##求第三列的平均值,行索引i没提供,意味着“所有行”
[1] 10.5
> var(x[2,]) ##求第二行的方差,列索引j没提供,意味着“所有列”
[1] 16
在R中,可以用一些特殊的函数来进行矩阵的行、列计算。来看些例子:
> x <- matrix(1:12, ncol=3)
> x
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> rowSums(x) ## 行和
[1] 15 18 21 24
> colSums(x) ## 列和
[1] 10 26 42
> rowMeans(x) ## 行平均
[1] 5 6 7 8
> colMeans(x) ## 列平均
[1] 2.5 6.5 10.5
上面四个函数都是R内建函数,当矩阵中没有
NA
和
NaN
时,计算效率非常高。
上述矩阵的行、列计算,还可以使用apply()
函数来实现。apply()
函数的原型为apply(X, MARGIN, FUN, ...)
,其中:X
为矩阵或数组;MARGIN
用来指定是对行运算还是对列运算,MARGIN=1
表示对行运算,MARGIN=2
表示对列运算;FUN
用来指定运算函数;...
用来指定F