以下以三维数组为例进行说明,当然也适用于colMeans函数和rowMeans函数。
由于矩阵较为简单,而且大家谈论较多,我就不展开了。
基础要求:对数组四则运算有一定了解,不熟悉的话,那就help R一下吧。- #生成一个2x3x2数组
- x<-array(1:12,c(2,3,2))
- #分别利用两种方法对第一维度求和
- apply(x,c(2,3),sum)
- [,1] [,2]
- [1,] 3 15
- [2,] 7 19
- [3,] 11 23
- colSums(x,dims=1)
- [,1] [,2]
- [1,] 3 15
- [2,] 7 19
- [3,] 11 23
- #分别利用两种方法对第二维度求和
- apply(x,c(1,3),sum)
- [,1] [,2]
- [1,] 9 27
- [2,] 12 30
- y<-aperm(x,c(2,1,3));colSums(y,dims=1)
- [,1] [,2]
- [1,] 9 27
- [2,] 12 30
- z<-aperm(x,c(1,3,2));rowSums(z,dims=2)
- [,1] [,2]
- [1,] 9 27
- [2,] 12 30
-
- #分别利用两种方法对第三维度求和
- apply(x,c(1,2),sum)
- [,1] [,2] [,3]
- [1,] 8 12 16
- [2,] 10 14 18
- rowSums(x,dims=2)
- [,1] [,2] [,3]
- [1,] 8 12 16
- [2,] 10 14 18
注意:dims为整数,对于rowSums,dims=n表示对n+1维及以后的维度进行求和(dims+1);对于colSums,dims=n表示对1:n维度进行求和(1:dims);aperm函数用于维度的相互转换。
有些抽象,大家细细品味吧!欢迎大家探讨,一起学习交流。
关于apply函数与colSums函数、rowSums函数的优劣,我会写个帖子,到时发上链接,和大家一起交流学习。


雷达卡






京公网安备 11010802022788号







